公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-24 15:18 UTC

jannskiee / floe

secure, encrypted P2P file transfer. No accounts, no file storage, end-to-end encrypted.

TypeScript · GoMIT★ 196 星标⑂ 9 复刻始于 2026年1月在 GitHub 上查看 ↗

jannskiee/floe 的健康指数为 100 分中的 67 分,处于「中等」区间。 其得分最高的类别是AI Readiness(91/100),最低的是Sustainability & Governance(53/100)。 最近一次更新在 1 天前。 近期的大部分工作由 1 位贡献者完成。

67
总分 / 100
中等

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

67
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

JC Paredes个人账户
6 关注者5 个公开仓库始于 2022年6月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/jannskiee/floev1.8.0-201 天前
npmp2p-fileshare指向其他仓库——不计分1.0.08212216 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

79良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 1 天前
8.3/36提交节奏 — 52 周中有 12 周有提交
18/18提交量 — 最近一年 355 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year355
human_commit_share0.92
days_since_last_push1
active_weeks_last_year12

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 20 个发布版本
36/36发布时效 — 最近一次发布版本于 1 天前
27/27发布节奏 — 约每 3.4 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count20
latest_release_tagv1.8.0
releases_from_tags
days_since_latest_release1
mean_days_between_releases3.4

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

57中等 · 占总体的 18%

流行度与采用

45存在风险
评分方式
37.1/60星标 — 196 个星标
7.5/25复刻 — 9 个复刻
0/15关注者 — 0 位关注者
所用输入
forks9
stars196
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

53中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
0/10OpenSSF Scorecard:Contributors — project has 0 contributing companies or organizations -- score normalized to 0
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
46.8/46.8议题解决 — 100% 的议题已关闭
36.3/38.3PR 接受 — 已裁定的 PR 中 185/195 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/24 approved changesets -- score normalized to 0
所用输入
merged_prs185
open_issues0
closed_issues1
issue_closed_ratio1
closed_unmerged_prs10
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
6.1/25所有者影响力 — jannskiee 有 6 位关注者
13.8/25既往记录 — 5 个公开仓库,账户约 4 年
所用输入
followers6
owner_typeUser
is_verified
owner_loginjannskiee
public_repos5
account_age_days1,492
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go 上有 1 个软件包
35/35发布时效 — 最近一次发布于 1 天前
20/20版本历史 — 20 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/jannskiee/floe
ecosystemsgo
any_deprecated
min_days_since_publish1

工程质量

基础的工程与文档实践是否到位?

89优秀 · 占总体的 20%

工程实践

82良好
评分方式
24/24CI 工作流 — 2 个工作流
24/24存在测试
16/16Linter 配置 — eslint.config.mjs
0/9.6Pre-commit 钩子
0/6.4.editorconfig
18/20OpenSSF Scorecard:CI-Tests — 28 out of 30 merged PRs checked by a CI test -- score normalized to 9
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://floe.one
10/10仓库描述
10/10主题标签 — 14 个主题标签
10/10Wiki
所用输入
topicsfile-sharing, file-transfer, nextjs, open-source, peer-to-peer, socket-io, typescript, webrtc, nodesjs, privacy, react, encryption, golang, p2p
has_wiki
homepagehttps://floe.one
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

57中等 · 占总体的 16%

安全态势

60中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.2/2.5CI-Tests — 28 out of 30 merged PRs checked by a CI test -- score normalized to 9
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/24 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
3/5SAST — SAST tool is not run on all commits -- score normalized to 6
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0/7.5Vulnerabilities — 12 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate6

依赖安全公告

47存在风险
评分方式
26.6/35直接依赖不含已知公告 — 1 个受影响:ip-address 6.3.0 (moderate)
2.6/25间接依赖不含已知公告 — 7 个受影响:node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3),另有 4 个
17.4/40没有长期未处理的公告 — 7 个携带公告的软件包超过 90 天未处理;最早一条发布于 2,138 天前
所用输入
sourceosv
advisories22
affected_packages8
assessed_packages354
unassessed_packages0
affected_by_severitycritical 1, high 5, moderate 2
direct_affected_packages1
比对的是 npm:p2p-fileshare@1.0.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 354 个软件包。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

91优秀 · 占总体的 0%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 92 次人类提交中有 92 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes12,362
评分方式
12.6/18一条命令的引导启动 — cli/go.mod(工具链约定,无任务运行器)
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.mjs
11/11静态类型检查 — client/tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 14 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 5 次为自动依赖更新
7/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
所用输入
has_nix
has_tests
lockfilesgo.sum, package-lock.json, pnpm-lock.yaml
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsclient/tsconfig.json
agent_commit_share0.14
toolchain_manifestscli/go.mod
dependency_bot_commit_share0.05
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
55/55可控的文件大小 — 采样的 114 个源文件中有 0 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes54,913
source_files_sampled114
oversized_source_files0

关键数据

196GitHub 星标
1贡献者
355最近 12 个月提交数
1距最近推送天数
20发布版本数
1巴士系数(bus factor)
0开放议题
Go, npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • npm package 'p2p-fileshare' points at a different repository (https://github.com/fluencelabs/p2p-fileshare); excluded from ecosystem scoring

更多细节

Star 与 Fork 历史 0 ★ / 9 ⇿
0Star
9Fork
18发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

0246810942026-042026-062026-07
主版本 1次版本 7修订 10
OpenSSF Scorecard 6.0 / 10
6.0综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-24 15:18 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
9CI-Tests28 out of 30 merged PRs checked by a CI test -- score normalized to 9
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/24 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
7Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 7
6SASTSAST tool is not run on all commits -- score normalized to 6
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
0Vulnerabilities12 existing vulnerabilities detected
直接依赖 28
注册表软件包版本约束清单文件
Gogithub.com/google/uuidv1.6.0cli/go.mod
Gogithub.com/gorilla/websocketv1.5.3cli/go.mod
Gogithub.com/pion/webrtc/v4v4.2.17cli/go.mod
Gogithub.com/schollz/progressbar/v3v3.19.1cli/go.mod
Gogithub.com/spf13/cobrav1.10.2cli/go.mod
npm@number-flow/react^0.6.2client/package.json
npm@radix-ui/react-accordion^1.2.16client/package.json
npm@radix-ui/react-progress^1.1.12client/package.json
npm@radix-ui/react-slot^1.3.0client/package.json
npm@sentry/nextjs^10.66.0client/package.json
npmclass-variance-authority^0.7.1client/package.json
npmclsx^2.1.1client/package.json
npmfflate^0.8.2client/package.json
npmlucide-react^1.25.0client/package.json
npmnext16.2.10client/package.json
npmqrcode.react^4.2.0client/package.json
npmreact19.2.7client/package.json
npmreact-dom19.2.7client/package.json
npmsimple-peer^9.11.1client/package.json
npmsocket.io-client^4.8.3client/package.json
npmtailwind-merge^3.4.0client/package.json
npmuuid^14.0.1client/package.json
npmcors^2.8.6server/package.json
npmdotenv^16.4.7server/package.json
npmexpress^5.2.1server/package.json
npmhelmet^8.3.0server/package.json
npmsocket.io^4.8.3server/package.json
npmws^8.21.1server/package.json
全部依赖 791

来自 GitHub 依赖图的完整解析依赖集合:30 个直接依赖与 761 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
Gogithub.com/google/uuidv1.6.0直接
Gogithub.com/gorilla/websocketv1.5.3直接
Gogithub.com/pion/webrtc/v4v4.2.15直接
Gogithub.com/schollz/progressbar/v3v3.19.0直接
Gogithub.com/spf13/cobrav1.10.2直接
npm@number-flow/react0.6.2直接
npm@radix-ui/react-accordion1.2.16直接
npm@radix-ui/react-progress1.1.12直接
npm@radix-ui/react-slot1.3.0直接
npm@sentry/nextjs10.66.0直接
npmclass-variance-authority0.7.1直接
npmclsx2.1.1直接
npmcors2.8.6直接
npmdotenv16.6.1直接
npmdotenv17.4.2直接
npmexpress5.2.1直接
npmfflate0.8.3直接
npmhelmet8.3.0直接
npmlucide-react1.25.0直接
npmnext16.2.10直接
npmqrcode.react4.2.0直接
npmreact19.2.7直接
npmreact-dom19.2.7直接
npmsimple-peer9.11.1直接
npmsocket.io4.8.3直接
npmsocket.io-client4.8.3直接
npmtailwind-merge3.6.0直接
npmuuid14.0.1直接
npmws8.21.0直接
npmws8.21.1直接
Gogithub.com/inconshreveable/mousetrapv1.1.0间接
Gogithub.com/mitchellh/colorstringv0.0.0-20190213212951-d06e56a500db间接
Gogithub.com/pion/datachannelv1.6.0间接
Gogithub.com/pion/dtls/v3v3.1.4间接
Gogithub.com/pion/ice/v4v4.2.7间接
Gogithub.com/pion/interceptorv0.1.45间接
Gogithub.com/pion/loggingv0.2.4间接
Gogithub.com/pion/mdns/v2v2.1.0间接
Gogithub.com/pion/randutilv0.1.0间接
Gogithub.com/pion/rtcpv1.2.16间接
Gogithub.com/pion/rtpv1.10.2间接
Gogithub.com/pion/sctpv1.10.0间接
Gogithub.com/pion/sdp/v3v3.0.18间接
Gogithub.com/pion/srtp/v3v3.0.11间接
Gogithub.com/pion/stun/v3v3.1.5间接
Gogithub.com/pion/transport/v4v4.0.2间接
Gogithub.com/pion/turn/v5v5.0.9间接
Gogithub.com/rivo/unisegv0.4.7间接
Gogithub.com/spf13/pflagv1.0.9间接
Gogithub.com/wlynxg/anetv0.0.5间接
Gogolang.org/x/cryptov0.53.0间接
Gogolang.org/x/netv0.56.0间接
Gogolang.org/x/sysv0.46.0间接
Gogolang.org/x/termv0.44.0间接
Gogolang.org/x/timev0.14.0间接
npm@alloc/quick-lru5.2.0间接
npm@apm-js-collab/code-transformer0.18.0间接
npm@apm-js-collab/code-transformer-bundler-plugins0.6.2间接
npm@apm-js-collab/tracing-hooks0.13.0间接
npm@babel/code-frame7.29.7间接
npm@babel/compat-data7.29.7间接
npm@babel/core7.29.7间接
npm@babel/generator7.29.7间接
npm@babel/helper-compilation-targets7.29.7间接
npm@babel/helper-globals7.29.7间接
npm@babel/helper-module-imports7.29.7间接
npm@babel/helper-module-transforms7.29.7间接
npm@babel/helper-string-parser7.29.7间接
npm@babel/helper-validator-identifier7.29.7间接
npm@babel/helper-validator-option7.29.7间接
npm@babel/helpers7.29.7间接
npm@babel/parser7.29.7间接
npm@babel/template7.29.7间接
npm@babel/traverse7.29.7间接
npm@babel/types7.29.7间接
npm@emnapi/core1.10.0间接
npm@emnapi/runtime1.10.0间接
npm@emnapi/runtime1.11.2间接
npm@emnapi/wasi-threads1.2.1间接
npm@esbuild/aix-ppc640.28.1间接
npm@esbuild/android-arm0.28.1间接
npm@esbuild/android-arm640.28.1间接
npm@esbuild/android-x640.28.1间接
npm@esbuild/darwin-arm640.28.1间接
npm@esbuild/darwin-x640.28.1间接
npm@esbuild/freebsd-arm640.28.1间接
npm@esbuild/freebsd-x640.28.1间接
npm@esbuild/linux-arm0.28.1间接
npm@esbuild/linux-arm640.28.1间接
npm@esbuild/linux-ia320.28.1间接
npm@esbuild/linux-loong640.28.1间接
npm@esbuild/linux-mips64el0.28.1间接
npm@esbuild/linux-ppc640.28.1间接
npm@esbuild/linux-riscv640.28.1间接
npm@esbuild/linux-s390x0.28.1间接
npm@esbuild/linux-x640.28.1间接
npm@esbuild/netbsd-arm640.28.1间接
npm@esbuild/netbsd-x640.28.1间接
npm@esbuild/openbsd-arm640.28.1间接
npm@esbuild/openbsd-x640.28.1间接
npm@esbuild/openharmony-arm640.28.1间接
npm@esbuild/sunos-x640.28.1间接
npm@esbuild/win32-arm640.28.1间接
npm@esbuild/win32-ia320.28.1间接
npm@esbuild/win32-x640.28.1间接
npm@eslint-community/eslint-utils4.9.1间接
npm@eslint-community/regexpp4.12.2间接
npm@eslint/config-array0.21.2间接
npm@eslint/config-helpers0.4.2间接
npm@eslint/core0.17.0间接
npm@eslint/eslintrc3.3.5间接
npm@eslint/js9.39.4间接
npm@eslint/object-schema2.1.7间接
npm@eslint/plugin-kit0.4.1间接
npm@humanfs/core0.19.2间接
npm@humanfs/node0.16.8间接
npm@humanfs/types0.15.0间接
npm@humanwhocodes/module-importer1.0.1间接
npm@humanwhocodes/retry0.4.3间接
npm@img/colour1.1.0间接
npm@img/sharp-darwin-arm640.34.5间接
npm@img/sharp-darwin-x640.34.5间接
npm@img/sharp-libvips-darwin-arm641.2.4间接
npm@img/sharp-libvips-darwin-x641.2.4间接
npm@img/sharp-libvips-linux-arm1.2.4间接
npm@img/sharp-libvips-linux-arm641.2.4间接
npm@img/sharp-libvips-linux-ppc641.2.4间接
npm@img/sharp-libvips-linux-riscv641.2.4间接
npm@img/sharp-libvips-linux-s390x1.2.4间接
npm@img/sharp-libvips-linux-x641.2.4间接
npm@img/sharp-libvips-linuxmusl-arm641.2.4间接
npm@img/sharp-libvips-linuxmusl-x641.2.4间接
npm@img/sharp-linux-arm0.34.5间接
npm@img/sharp-linux-arm640.34.5间接
npm@img/sharp-linux-ppc640.34.5间接
npm@img/sharp-linux-riscv640.34.5间接
npm@img/sharp-linux-s390x0.34.5间接
npm@img/sharp-linux-x640.34.5间接
npm@img/sharp-linuxmusl-arm640.34.5间接
npm@img/sharp-linuxmusl-x640.34.5间接
npm@img/sharp-wasm320.34.5间接
npm@img/sharp-win32-arm640.34.5间接
npm@img/sharp-win32-ia320.34.5间接
npm@img/sharp-win32-x640.34.5间接
npm@jridgewell/gen-mapping0.3.13间接
npm@jridgewell/remapping2.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/source-map0.3.11间接
npm@jridgewell/sourcemap-codec1.5.5间接
npm@jridgewell/trace-mapping0.3.31间接
npm@napi-rs/wasm-runtime1.1.6间接
npm@next/env16.2.10间接
npm@next/eslint-plugin-next16.2.10间接
npm@next/swc-darwin-arm6416.2.10间接
npm@next/swc-darwin-x6416.2.10间接
npm@next/swc-linux-arm64-gnu16.2.10间接
npm@next/swc-linux-arm64-musl16.2.10间接
npm@next/swc-linux-x64-gnu16.2.10间接
npm@next/swc-linux-x64-musl16.2.10间接
npm@next/swc-win32-arm64-msvc16.2.10间接
npm@next/swc-win32-x64-msvc16.2.10间接
npm@nodelib/fs.scandir2.1.5间接
npm@nodelib/fs.stat2.0.5间接
npm@nodelib/fs.walk1.2.8间接
npm@nolyfill/is-core-module1.0.39间接
npm@opentelemetry/api1.9.1间接
npm@opentelemetry/api-logs0.220.0间接
npm@opentelemetry/core2.9.0间接
npm@opentelemetry/instrumentation0.220.0间接
npm@opentelemetry/resources2.9.0间接
npm@opentelemetry/sdk-trace2.9.0间接
npm@opentelemetry/sdk-trace-base2.9.0间接
npm@opentelemetry/semantic-conventions1.43.0间接
npm@playwright/test1.61.1间接
npm@radix-ui/primitive1.1.5间接
npm@radix-ui/react-collapsible1.1.16间接
npm@radix-ui/react-collection1.1.12间接
npm@radix-ui/react-compose-refs1.1.3间接
npm@radix-ui/react-context1.2.0间接
npm@radix-ui/react-direction1.1.2间接
npm@radix-ui/react-id1.1.2间接
npm@radix-ui/react-presence1.1.7间接
npm@radix-ui/react-primitive2.1.7间接
npm@radix-ui/react-use-controllable-state1.2.3间接
npm@radix-ui/react-use-effect-event0.0.3间接
npm@radix-ui/react-use-layout-effect1.1.2间接
npm@rollup/plugin-commonjs28.0.1间接
npm@rollup/pluginutils5.4.0间接
npm@rollup/rollup-android-arm-eabi4.62.2间接
npm@rollup/rollup-android-arm644.62.2间接
npm@rollup/rollup-darwin-arm644.62.2间接
npm@rollup/rollup-darwin-x644.62.2间接
npm@rollup/rollup-freebsd-arm644.62.2间接
npm@rollup/rollup-freebsd-x644.62.2间接
npm@rollup/rollup-linux-arm-gnueabihf4.62.2间接
npm@rollup/rollup-linux-arm-musleabihf4.62.2间接
npm@rollup/rollup-linux-arm64-gnu4.62.2间接
npm@rollup/rollup-linux-arm64-musl4.62.2间接
npm@rollup/rollup-linux-loong64-gnu4.62.2间接
npm@rollup/rollup-linux-loong64-musl4.62.2间接
npm@rollup/rollup-linux-ppc64-gnu4.62.2间接
npm@rollup/rollup-linux-ppc64-musl4.62.2间接
npm@rollup/rollup-linux-riscv64-gnu4.62.2间接
npm@rollup/rollup-linux-riscv64-musl4.62.2间接
npm@rollup/rollup-linux-s390x-gnu4.62.2间接
npm@rollup/rollup-linux-x64-gnu4.62.2间接
npm@rollup/rollup-linux-x64-musl4.62.2间接
npm@rollup/rollup-openbsd-x644.62.2间接
npm@rollup/rollup-openharmony-arm644.62.2间接
npm@rollup/rollup-win32-arm64-msvc4.62.2间接
npm@rollup/rollup-win32-ia32-msvc4.62.2间接
npm@rollup/rollup-win32-x64-gnu4.62.2间接
npm@rollup/rollup-win32-x64-msvc4.62.2间接
npm@rtsao/scc1.1.0间接
npm@sentry/babel-plugin-component-annotate5.3.0间接
npm@sentry/browser10.66.0间接
npm@sentry/browser-utils10.66.0间接
npm@sentry/bundler-plugin-core5.3.0间接
npm@sentry/bundler-plugins10.66.0间接
npm@sentry/cli2.58.6间接
npm@sentry/cli-darwin2.58.6间接
npm@sentry/cli-linux-arm2.58.6间接
npm@sentry/cli-linux-arm642.58.6间接
npm@sentry/cli-linux-i6862.58.6间接
npm@sentry/cli-linux-x642.58.6间接
npm@sentry/cli-win32-arm642.58.6间接
npm@sentry/cli-win32-i6862.58.6间接
npm@sentry/cli-win32-x642.58.6间接
npm@sentry/conventions0.16.0间接
npm@sentry/core10.66.0间接
npm@sentry/feedback10.66.0间接
npm@sentry/node10.66.0间接
npm@sentry/node-core10.66.0间接
npm@sentry/opentelemetry10.66.0间接
npm@sentry/react10.66.0间接
npm@sentry/replay10.66.0间接
npm@sentry/replay-canvas10.66.0间接
npm@sentry/server-utils10.66.0间接
npm@sentry/vercel-edge10.66.0间接
npm@sentry/webpack-plugin5.4.0间接
npm@socket.io/component-emitter3.1.2间接
npm@swc/helpers0.5.15间接
npm@tailwindcss/node4.3.3间接
npm@tailwindcss/oxide4.3.3间接
npm@tailwindcss/oxide-android-arm644.3.3间接
npm@tailwindcss/oxide-darwin-arm644.3.3间接
npm@tailwindcss/oxide-darwin-x644.3.3间接
npm@tailwindcss/oxide-freebsd-x644.3.3间接
npm@tailwindcss/oxide-linux-arm-gnueabihf4.3.3间接
npm@tailwindcss/oxide-linux-arm64-gnu4.3.3间接
npm@tailwindcss/oxide-linux-arm64-musl4.3.3间接
npm@tailwindcss/oxide-linux-x64-gnu4.3.3间接
npm@tailwindcss/oxide-linux-x64-musl4.3.3间接
npm@tailwindcss/oxide-wasm32-wasi4.3.3间接
npm@tailwindcss/oxide-win32-arm64-msvc4.3.3间接
npm@tailwindcss/oxide-win32-x64-msvc4.3.3间接
npm@tailwindcss/postcss4.3.3间接
npm@tybys/wasm-util0.10.3间接
npm@types/chai5.2.3间接
npm@types/cors2.8.19间接
npm@types/deep-eql4.0.2间接
npm@types/estree1.0.9间接
npm@types/json-schema7.0.15间接
npm@types/json50.0.29间接
npm@types/node25.0.3间接
npm@types/node26.1.1间接
npm@types/react19.2.17间接
npm@types/react-dom19.2.3间接
npm@types/simple-peer9.11.9间接
npm@types/uuid10.0.0间接
npm@types/ws8.18.1间接
npm@typescript-eslint/eslint-plugin8.64.0间接
npm@typescript-eslint/parser8.64.0间接
npm@typescript-eslint/project-service8.64.0间接
npm@typescript-eslint/scope-manager8.64.0间接
npm@typescript-eslint/tsconfig-utils8.64.0间接
npm@typescript-eslint/type-utils8.64.0间接
npm@typescript-eslint/types8.64.0间接
npm@typescript-eslint/typescript-estree8.64.0间接
npm@typescript-eslint/utils8.64.0间接
npm@typescript-eslint/visitor-keys8.64.0间接
npm@unrs/resolver-binding-android-arm-eabi1.12.2间接
npm@unrs/resolver-binding-android-arm641.12.2间接
npm@unrs/resolver-binding-darwin-arm641.12.2间接
npm@unrs/resolver-binding-darwin-x641.12.2间接
npm@unrs/resolver-binding-freebsd-x641.12.2间接
npm@unrs/resolver-binding-linux-arm-gnueabihf1.12.2间接
npm@unrs/resolver-binding-linux-arm-musleabihf1.12.2间接
npm@unrs/resolver-binding-linux-arm64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-arm64-musl1.12.2间接
npm@unrs/resolver-binding-linux-loong64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-loong64-musl1.12.2间接
npm@unrs/resolver-binding-linux-ppc64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-riscv64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-riscv64-musl1.12.2间接
npm@unrs/resolver-binding-linux-s390x-gnu1.12.2间接
npm@unrs/resolver-binding-linux-x64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-x64-musl1.12.2间接
npm@unrs/resolver-binding-openharmony-arm641.12.2间接
npm@unrs/resolver-binding-wasm32-wasi1.12.2间接
npm@unrs/resolver-binding-win32-arm64-msvc1.12.2间接
npm@unrs/resolver-binding-win32-ia32-msvc1.12.2间接
npm@unrs/resolver-binding-win32-x64-msvc1.12.2间接
npm@vitest/expect3.2.6间接
npm@vitest/mocker3.2.6间接
npm@vitest/pretty-format3.2.6间接
npm@vitest/runner3.2.6间接
npm@vitest/snapshot3.2.6间接
npm@vitest/spy3.2.6间接
npm@vitest/utils3.2.6间接
npm@webassemblyjs/ast1.14.1间接
npm@webassemblyjs/floating-point-hex-parser1.13.2间接
npm@webassemblyjs/helper-api-error1.13.2间接
npm@webassemblyjs/helper-buffer1.14.1间接
npm@webassemblyjs/helper-numbers1.13.2间接
npm@webassemblyjs/helper-wasm-bytecode1.13.2间接
npm@webassemblyjs/helper-wasm-section1.14.1间接
npm@webassemblyjs/ieee7541.13.2间接
npm@webassemblyjs/leb1281.13.2间接
npm@webassemblyjs/utf81.13.2间接
npm@webassemblyjs/wasm-edit1.14.1间接
npm@webassemblyjs/wasm-gen1.14.1间接
npm@webassemblyjs/wasm-opt1.14.1间接
npm@webassemblyjs/wasm-parser1.14.1间接
npm@webassemblyjs/wast-printer1.14.1间接
npm@xtuc/ieee7541.2.0间接
npm@xtuc/long4.2.2间接
npmaccepts1.3.8间接
npmaccepts2.0.0间接
npmacorn8.17.0间接
npmacorn-import-phases1.0.4间接
npmacorn-jsx5.3.2间接
npmagent-base6.0.2间接
npmajv6.15.0间接
npmajv8.20.0间接
npmajv-formats2.1.1间接
npmajv-keywords5.1.0间接
npmansi-styles4.3.0间接
npmanymatch3.1.3间接
npmargparse2.0.1间接
npmaria-query5.3.2间接
npmarray-buffer-byte-length1.0.2间接
npmarray-includes3.1.9间接
npmarray.prototype.findlast1.2.5间接
npmarray.prototype.findlastindex1.2.6间接
npmarray.prototype.flat1.3.3间接
npmarray.prototype.flatmap1.3.3间接
npmarray.prototype.tosorted1.1.4间接
npmarraybuffer.prototype.slice1.0.4间接
npmassertion-error2.0.1间接
npmast-types-flow0.0.8间接
npmastring1.9.0间接
npmasync-function1.0.0间接
npmavailable-typed-arrays1.0.7间接
npmaxe-core4.12.1间接
npmaxobject-query4.1.0间接
npmbalanced-match1.0.2间接
npmbalanced-match4.0.4间接
npmbase64-js1.5.1间接
npmbase64id2.0.0间接
npmbaseline-browser-mapping2.10.43间接
npmbinary-extensions2.3.0间接
npmbody-parser2.3.0间接
npmbrace-expansion1.1.16间接
npmbrace-expansion5.0.7间接
npmbraces3.0.3间接
npmbrowserslist4.28.6间接
npmbuffer6.0.3间接
npmbuffer-from1.1.2间接
npmbytes3.1.2间接
npmcac6.7.14间接
npmcall-bind1.0.9间接
npmcall-bind-apply-helpers1.0.2间接
npmcall-bound1.0.4间接
npmcallsites3.1.0间接
npmcaniuse-lite1.0.30001806间接
npmchai5.3.3间接
npmchalk4.1.2间接
npmcheck-error2.1.3间接
npmchokidar3.6.0间接
npmchrome-trace-event1.0.4间接
npmcjs-module-lexer2.2.0间接
npmclient-only0.0.1间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.4间接
npmcommander2.20.3间接
npmcommondir1.0.1间接
npmconcat-map0.0.1间接
npmcontent-disposition1.0.1间接
npmcontent-type1.0.5间接
npmcontent-type2.0.0间接
npmconvert-source-map2.0.0间接
npmcookie0.7.2间接
npmcookie-signature1.2.2间接
npmcross-spawn7.0.6间接
npmcsstype3.2.3间接
npmdamerau-levenshtein1.0.8间接
npmdata-view-buffer1.0.2间接
npmdata-view-byte-length1.0.2间接
npmdata-view-byte-offset1.0.1间接
npmdebug3.2.7间接
npmdebug4.4.3间接
npmdeep-eql5.0.2间接
npmdeep-is0.1.4间接
npmdefine-data-property1.1.4间接
npmdefine-properties1.2.1间接
npmdepd2.0.0间接
npmdetect-libc2.1.2间接
npmdoctrine2.1.0间接
npmdunder-proto1.0.1间接
npmee-first1.1.1间接
npmelectron-to-chromium1.5.393间接
npmemoji-regex9.2.2间接
npmencodeurl2.0.0间接
npmengine.io6.6.8间接
npmengine.io-client6.6.5间接
npmengine.io-parser5.2.3间接
npmenhanced-resolve5.24.2间接
npmerr-code3.0.1间接
npmes-abstract1.24.2间接
npmes-abstract-get1.0.0间接
npmes-define-property1.0.1间接
npmes-errors1.3.0间接
npmes-iterator-helpers1.4.0间接
npmes-module-lexer1.7.0间接
npmes-module-lexer2.3.1间接
npmes-object-atoms1.1.1间接
npmes-object-atoms1.1.2间接
npmes-set-tostringtag2.1.0间接
npmes-shim-unscopables1.1.0间接
npmes-to-primitive1.3.4间接
npmesbuild0.28.1间接
npmescalade3.2.0间接
npmescape-html1.0.3间接
npmescape-string-regexp4.0.0间接
npmeslint9.39.4间接
npmeslint-config-next16.2.10间接
npmeslint-import-resolver-node0.3.10间接
npmeslint-import-resolver-typescript3.10.1间接
npmeslint-module-utils2.14.0间接
npmeslint-plugin-import2.32.0间接
npmeslint-plugin-jsx-a11y6.10.2间接
npmeslint-plugin-react7.37.5间接
npmeslint-plugin-react-hooks7.1.1间接
npmeslint-scope5.1.1间接
npmeslint-scope8.4.0间接
npmeslint-visitor-keys3.4.3间接
npmeslint-visitor-keys4.2.1间接
npmeslint-visitor-keys5.0.1间接
npmesm-env1.2.2间接
npmespree10.4.0间接
npmesquery1.7.0间接
npmesrecurse4.3.0间接
npmestraverse4.3.0间接
npmestraverse5.3.0间接
npmestree-walker2.0.2间接
npmestree-walker3.0.3间接
npmesutils2.0.3间接
npmetag1.8.1间接
npmevents3.3.0间接
npmexpect-type1.3.0间接
npmfast-deep-equal3.1.3间接
npmfast-glob3.3.1间接
npmfast-json-stable-stringify2.1.0间接
npmfast-levenshtein2.0.6间接
npmfast-uri3.1.3间接
npmfastq1.20.1间接
npmfdir6.5.0间接
npmfile-entry-cache8.0.0间接
npmfill-range7.1.1间接
npmfinalhandler2.1.1间接
npmfind-up5.0.0间接
npmflat-cache4.0.1间接
npmflatted3.4.2间接
npmfor-each0.3.5间接
npmforwarded0.2.0间接
npmfresh2.0.0间接
npmfsevents2.3.2间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmfunction.prototype.name1.2.0间接
npmfunctions-have-names1.2.3间接
npmgenerator-function2.0.1间接
npmgensync1.0.0-beta.2间接
npmget-browser-rtc1.1.0间接
npmget-intrinsic1.3.0间接
npmget-proto1.0.1间接
npmget-symbol-description1.1.0间接
npmget-tsconfig4.14.0间接
npmglob13.0.6间接
npmglob-parent5.1.2间接
npmglob-parent6.0.2间接
npmglob-to-regexp0.4.1间接
npmglobals14.0.0间接
npmglobals16.4.0间接
npmglobalthis1.0.4间接
npmgopd1.2.0间接
npmgraceful-fs4.2.11间接
npmhas-bigints1.1.0间接
npmhas-flag3.0.0间接
npmhas-flag4.0.0间接
npmhas-property-descriptors1.0.2间接
npmhas-proto1.2.0间接
npmhas-symbols1.1.0间接
npmhas-tostringtag1.0.2间接
npmhasown2.0.2间接
npmhasown2.0.4间接
npmhermes-estree0.25.1间接
npmhermes-parser0.25.1间接
npmhttp-errors2.0.1间接
npmhttps-proxy-agent5.0.1间接
npmiconv-lite0.7.3间接
npmieee7541.2.1间接
npmignore5.3.2间接
npmignore7.0.6间接
npmignore-by-default1.0.1间接
npmimport-fresh3.3.1间接
npmimport-in-the-middle3.3.1间接
npmimurmurhash0.1.4间接
npminherits2.0.4间接
npminternal-slot1.1.0间接
npmipaddr.js1.9.1间接
npmis-array-buffer3.0.5间接
npmis-async-function2.1.1间接
npmis-bigint1.1.0间接
npmis-binary-path2.1.0间接
npmis-boolean-object1.2.2间接
npmis-bun-module2.0.0间接
npmis-callable1.2.7间接
npmis-core-module2.16.2间接
npmis-data-view1.0.2间接
npmis-date-object1.1.0间接
npmis-document.all1.0.0间接
npmis-extglob2.1.1间接
npmis-finalizationregistry1.1.1间接
npmis-generator-function1.1.2间接
npmis-glob4.0.3间接
npmis-map2.0.3间接
npmis-negative-zero2.0.3间接
npmis-number7.0.0间接
npmis-number-object1.1.1间接
npmis-promise4.0.0间接
npmis-reference1.2.1间接
npmis-regex1.2.1间接
npmis-set2.0.3间接
npmis-shared-array-buffer1.0.4间接
npmis-string1.1.1间接
npmis-symbol1.1.1间接
npmis-typed-array1.1.15间接
npmis-weakmap2.0.2间接
npmis-weakref1.1.1间接
npmis-weakset2.0.4间接
npmisarray2.0.5间接
npmisexe2.0.0间接
npmiterator.prototype1.1.5间接
npmjest-worker27.5.1间接
npmjiti2.7.0间接
npmjs-tokens4.0.0间接
npmjs-tokens9.0.1间接
npmjs-yaml4.3.0间接
npmjsesc3.1.0间接
npmjson-buffer3.0.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson-stable-stringify-without-jsonify1.0.1间接
npmjson51.0.2间接
npmjson52.2.3间接
npmjsx-ast-utils3.3.5间接
npmkeyv4.5.4间接
npmlanguage-subtag-registry0.3.23间接
npmlanguage-tags1.0.9间接
npmlevn0.4.1间接
npmlightningcss1.32.0间接
npmlightningcss-android-arm641.32.0间接
npmlightningcss-darwin-arm641.32.0间接
npmlightningcss-darwin-x641.32.0间接
npmlightningcss-freebsd-x641.32.0间接
npmlightningcss-linux-arm-gnueabihf1.32.0间接
npmlightningcss-linux-arm64-gnu1.32.0间接
npmlightningcss-linux-arm64-musl1.32.0间接
npmlightningcss-linux-x64-gnu1.32.0间接
npmlightningcss-linux-x64-musl1.32.0间接
npmlightningcss-win32-arm64-msvc1.32.0间接
npmlightningcss-win32-x64-msvc1.32.0间接
npmloader-runner4.3.2间接
npmlocate-path6.0.0间接
npmlodash.merge4.6.2间接
npmloose-envify1.4.0间接
npmloupe3.2.1间接
npmlru-cache11.5.2间接
npmlru-cache5.1.1间接
npmmagic-string0.30.21间接
npmmath-intrinsics1.1.0间接
npmmedia-typer1.1.0间接
npmmerge-descriptors2.0.0间接
npmmerge-stream2.0.0间接
npmmerge21.4.1间接
npmmeriyah6.1.4间接
npmmicromatch4.0.8间接
npmmime-db1.52.0间接
npmmime-db1.54.0间接
npmmime-types2.1.35间接
npmmime-types3.0.2间接
npmminimatch10.2.5间接
npmminimatch3.1.5间接
npmminimist1.2.8间接
npmminipass7.1.3间接
npmmodule-details-from-path1.0.4间接
npmms2.1.3间接
npmnanoid3.3.16间接
npmnapi-postinstall0.3.4间接
npmnatural-compare1.4.0间接
npmnegotiator0.6.3间接
npmnegotiator1.0.0间接
npmneo-async2.6.2间接
npmnode-exports-info1.6.2间接
npmnode-fetch2.7.0间接
npmnode-releases2.0.51间接
npmnodemon3.1.14间接
npmnormalize-path3.0.0间接
npmnumber-flow0.6.2间接
npmobject-assign4.1.1间接
npmobject-inspect1.13.4间接
npmobject-keys1.1.1间接
npmobject.assign4.1.7间接
npmobject.entries1.1.9间接
npmobject.fromentries2.0.8间接
npmobject.groupby1.0.3间接
npmobject.values1.2.1间接
npmon-finished2.4.1间接
npmonce1.4.0间接
npmoptionator0.9.4间接
npmown-keys1.0.1间接
npmp-limit3.1.0间接
npmp-locate5.0.0间接
npmparent-module1.0.1间接
npmparseurl1.3.3间接
npmpath-exists4.0.0间接
npmpath-key3.1.1间接
npmpath-parse1.0.7间接
npmpath-scurry2.0.2间接
npmpath-to-regexp8.4.2间接
npmpathe2.0.3间接
npmpathval2.0.1间接
npmpicocolors1.1.1间接
npmpicomatch2.3.2间接
npmpicomatch4.0.4间接
npmpicomatch4.0.5间接
npmplaywright1.61.1间接
npmplaywright-core1.61.1间接
npmpossible-typed-array-names1.1.0间接
npmpostcss8.5.19间接
npmprelude-ls1.2.1间接
npmprettier3.7.4间接
npmprogress2.0.3间接
npmprop-types15.8.1间接
npmproxy-addr2.0.7间接
npmproxy-from-env1.1.0间接
npmpstree.remy1.1.8间接
npmpunycode2.3.1间接
npmqs6.15.2间接
npmqueue-microtask1.2.3间接
npmrandombytes2.1.0间接
npmrange-parser1.2.1间接
npmraw-body3.0.2间接
npmreact-is16.13.1间接
npmreadable-stream3.6.2间接
npmreaddirp3.6.0间接
npmreflect.getprototypeof1.0.10间接
npmregexp.prototype.flags1.5.4间接
npmrequire-from-string2.0.2间接
npmrequire-in-the-middle8.0.1间接
npmresolve2.0.0-next.7间接
npmresolve-from4.0.0间接
npmresolve-pkg-maps1.0.0间接
npmreusify1.1.0间接
npmrollup4.62.2间接
npmrouter2.2.0间接
npmrun-parallel1.2.0间接
npmsafe-array-concat1.1.4间接
npmsafe-buffer5.2.1间接
npmsafe-push-apply1.0.0间接
npmsafe-regex-test1.1.0间接
npmsafer-buffer2.1.2间接
npmscheduler0.27.0间接
npmschema-utils4.3.3间接
npmsemifies1.0.0间接
npmsemver6.3.1间接
npmsemver7.7.3间接
npmsemver7.8.5间接
npmsend1.2.1间接
npmserve-static2.2.1间接
npmset-function-length1.2.2间接
npmset-function-name2.0.2间接
npmset-proto1.0.0间接
npmsetprototypeof1.2.0间接
npmsharp0.34.5间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmside-channel1.1.0间接
npmside-channel1.1.1间接
npmside-channel-list1.0.0间接
npmside-channel-list1.0.1间接
npmside-channel-map1.0.1间接
npmside-channel-weakmap1.0.2间接
npmsiginfo2.0.0间接
npmsimple-update-notifier2.0.0间接
npmsocket.io-adapter2.5.7间接
npmsocket.io-parser4.2.6间接
npmsource-map0.6.1间接
npmsource-map-js1.2.1间接
npmsource-map-support0.5.21间接
npmstable-hash0.0.5间接
npmstackback0.0.2间接
npmstacktrace-parser0.1.11间接
npmstatuses2.0.2间接
npmstd-env3.10.0间接
npmstop-iteration-iterator1.1.0间接
npmstring.prototype.includes2.0.1间接
npmstring.prototype.matchall4.0.12间接
npmstring.prototype.repeat1.0.0间接
npmstring.prototype.trim1.2.11间接
npmstring.prototype.trimend1.0.10间接
npmstring.prototype.trimstart1.0.8间接
npmstring_decoder1.3.0间接
npmstrip-bom3.0.0间接
npmstrip-json-comments3.1.1间接
npmstrip-literal3.1.0间接
npmstyled-jsx5.1.6间接
npmsupports-color5.5.0间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmtailwindcss4.3.3间接
npmtapable2.3.3间接
npmterser5.49.0间接
npmterser-webpack-plugin5.6.1间接
npmtinybench2.9.0间接
npmtinyexec0.3.2间接
npmtinyglobby0.2.17间接
npmtinypool1.1.1间接
npmtinyrainbow2.0.0间接
npmtinyspy4.0.4间接
npmto-regex-range5.0.1间接
npmtoidentifier1.0.1间接
npmtouch3.1.1间接
npmtr460.0.3间接
npmts-api-utils2.5.0间接
npmtsconfig-paths3.15.0间接
npmtslib2.8.1间接
npmtw-animate-css1.4.0间接
npmtype-check0.4.0间接
npmtype-fest0.7.1间接
npmtype-is2.1.0间接
npmtyped-array-buffer1.0.3间接
npmtyped-array-byte-length1.0.3间接
npmtyped-array-byte-offset1.0.4间接
npmtyped-array-length1.0.8间接
npmtypescript5.9.3间接
npmtypescript-eslint8.64.0间接
npmunbox-primitive1.1.0间接
npmundefsafe2.0.5间接
npmundici-types7.16.0间接
npmundici-types8.3.0间接
npmunpipe1.0.0间接
npmunrs-resolver1.12.2间接
npmupdate-browserslist-db1.2.3间接
npmuri-js4.4.1间接
npmutil-deprecate1.0.2间接
npmvary1.1.2间接
npmvite7.3.5间接
npmvite-node3.2.4间接
npmvitest3.2.6间接
npmwatchpack2.5.2间接
npmwebidl-conversions3.0.1间接
npmwebpack5.107.2间接
npmwebpack-sources3.5.1间接
npmwhatwg-url5.0.0间接
npmwhich2.0.2间接
npmwhich-boxed-primitive1.1.1间接
npmwhich-builtin-type1.2.1间接
npmwhich-collection1.0.2间接
npmwhich-typed-array1.1.22间接
npmwhy-is-node-running2.3.0间接
npmword-wrap1.2.5间接
npmwrappy1.0.2间接
npmxmlhttprequest-ssl2.1.2间接
npmyallist3.1.1间接
npmyocto-queue0.1.0间接
npmzod4.4.3间接
npmzod-validation-error4.0.2间接
依赖安全公告 8

安装 npm:p2p-fileshare@1.0.0 会引入 354 个包(直接与传递):其中 8 个存在已知公告,1 个为直接依赖。

软件包版本关系严重程度公告数修复版本
node-forge0.9.2间接严重151.4.0
async3.2.0间接13.2.2
elliptic6.6.1间接1
libp2p0.27.4间接10.38.0
parse-duration0.1.3间接12.1.3
uuid3.4.0间接113.0.1
ip-address6.3.0直接110.1.1
nanoid2.1.11间接15.0.9

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "file-sharing",
        "file-transfer",
        "nextjs",
        "open-source",
        "peer-to-peer",
        "socket-io",
        "typescript",
        "webrtc",
        "nodesjs",
        "privacy",
        "react",
        "encryption",
        "golang",
        "p2p"
      ],
      "is_fork": false,
      "size_kb": 1890,
      "has_wiki": true,
      "homepage": "https://floe.one",
      "languages": {
        "Go": 142041,
        "CSS": 5533,
        "Shell": 4222,
        "Dockerfile": 3122,
        "JavaScript": 51988,
        "PowerShell": 3795,
        "TypeScript": 352894
      },
      "pushed_at": "2026-07-23T14:48:51Z",
      "created_at": "2026-01-15T06:20:26Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T07:28:51Z",
      "description": "secure, encrypted P2P file transfer. No accounts, no file storage, end-to-end encrypted.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "JC Paredes",
      "type": "User",
      "login": "jannskiee",
      "company": null,
      "location": "Philippines",
      "followers": 6,
      "avatar_url": "https://avatars.githubusercontent.com/u/108071426?v=4",
      "created_at": "2022-06-23T12:28:31Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 1492
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-07-22T16:12:08Z"
        },
        {
          "tag": "v1.7.6",
          "kind": "patch",
          "published_at": "2026-07-21T14:40:49Z"
        },
        {
          "tag": "v1.7.5",
          "kind": "patch",
          "published_at": "2026-07-10T06:56:06Z"
        },
        {
          "tag": "v1.7.4",
          "kind": "patch",
          "published_at": "2026-07-09T16:56:48Z"
        },
        {
          "tag": "v1.7.3",
          "kind": "patch",
          "published_at": "2026-07-09T14:25:47Z"
        },
        {
          "tag": "v1.7.2",
          "kind": "patch",
          "published_at": "2026-06-30T14:10:28Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2026-06-22T11:56:00Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-06-22T11:27:56Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-06-21T17:41:47Z"
        },
        {
          "tag": "v1.5.5",
          "kind": "patch",
          "published_at": "2026-06-21T15:45:42Z"
        },
        {
          "tag": "v1.5.4",
          "kind": "patch",
          "published_at": "2026-06-21T15:23:59Z"
        },
        {
          "tag": "v1.5.3",
          "kind": "patch",
          "published_at": "2026-06-21T14:49:30Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2026-06-17T15:23:38Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2026-06-17T12:20:20Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-06-17T11:18:11Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-06-16T18:25:02Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-06-16T17:48:30Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-06-15T18:21:17Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-06-15T16:55:09Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-06-14T06:52:44Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "87e88663fedb72cb6fb138b368381d2106f19706",
          "body": "The documentation moved from the docs.floe.one subdomain to the\nfloe.one/docs subpath. Update every in-repo reference (web app footer/nav\nand landing links, the CLI's printed Documentation URL, README,\nSELF_HOSTING, the docs CLI examples, and CLAUDE.md) to the new URL. Old\ndocs.floe.one links keep w\n[…]\nthat removes the extra redirect hop.\n\nThe docs/changelog.mdx historical entry is left as-is (hand-written), and\nthe next.config.mjs redirect rule intentionally keeps docs.floe.one as its\nhost matcher.",
          "is_bot": false,
          "headline": "docs: point all docs.floe.one links at floe.one/docs (#197)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T13:04:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72d2af746f6c646dfdd8d3e306fa2ef200e2b263",
          "body": "… (#196)\n\nThe /docs rewrite proxied to floe.mintlify.app, but that host always\nserves the docs at the root; only floe.mintlify.site (and .dev) serve the\ndeployment's /docs base path. With base path set to /docs, the .app origin\nreturns 404, so www.floe.one/docs 404'd. Switch the rewrite destination to\nfloe.mintlify.site/docs, which is Mintlify's documented reverse-proxy\norigin and serves the base path correctly.",
          "is_bot": false,
          "headline": "fix(client): point docs rewrite at the base-path host (mintlify.site)…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T12:29:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da6de4637fd8fd85465382c66ad86aef33c4b615",
          "body": "Add a rewrite that proxies /docs and /docs/* to the Mintlify docs\ndeployment (which will run with base path /docs) and a host-scoped 301\nthat sends docs.floe.one/* to the matching www.floe.one/docs/* URL with\nthe full path preserved. This moves the documentation onto the primary\ndomain as a subpath \n[…]\nlify until the DNS cutover.\nSo merging and deploying this changes nothing user-facing. The Mintlify\nbase-path flip, the DNS repoint, and the internal link updates follow as\nseparate coordinated steps.",
          "is_bot": false,
          "headline": "feat(client): serve docs at /docs via Mintlify reverse proxy (#195)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-23T12:04:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "10144e677b3112dd7f5acf0d78196089e62a3085",
          "body": null,
          "is_bot": false,
          "headline": "docs: changelog for v1.8.0 (#194)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-22T16:09:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5af15c9a1e1fdd5bf9978aa853a784723ff4a9d3",
          "body": "* feat(cli): cap relayed transfers at 2 GB\n\nMirror the browser's relay gate in the CLI sender: once the connection is\nestablished, SendFiles inspects the selected ICE candidate pair and blocks\nthe transfer before any metadata or file bytes move when the path runs\nthrough a TURN relay and the queued \n[…]\n the\ntransfer was blocked)\" for the zero-file case, and \"connection closed\nafter N of M files\" for a partial batch. Regression-tested with a real\nloopback pair whose sender walks away without sending.",
          "is_bot": false,
          "headline": "feat(cli): cap relayed transfers at 2 GB (#193)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-22T16:07:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "33cc9a5880a8ac206d6ff122ad760a80e7c33bab",
          "body": "CodeQL flagged the dummy-base strip in scrubUrl: startsWith(BASE) also\nmatched absolute URLs on hosts that merely begin with \"scrub.invalid\"\n(for example scrub.invalid.evil.com), slicing them into garbage in the\nSentry breadcrumb. No secret was ever at risk (room scrubbing happens\nbefore the strip), the output was just wrong for that pathological\nhost. Matching BASE plus '/' is exact: a serialized URL always has '/'\nafter the host, so the prefix now only matches the dummy base itself.",
          "is_bot": false,
          "headline": "fix(client): match the scrub base with its path separator (#192)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T15:18:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76a3499ec6efe36c3fe5caa15a4c05397de6bba7",
          "body": "…ixes (#191)\n\nResolves the three open Dependabot alerts (no fix PRs arrived after\nseveral hours). brace-expansion 1.1.16 and js-yaml 4.3.0 land via the\nestablished pnpm-workspace.yaml override mechanism, scoped so the\nnon-vulnerable brace-expansion 5.x line is untouched; both are dev-only\ntooling de\n[…]\nlies when an invalid limit value is configured, which\nthis server never does, so this is hygiene rather than an exposure fix.\n\npnpm audit and npm audit both report zero vulnerabilities after the\npins.",
          "is_bot": false,
          "headline": "chore(deps): pin brace-expansion, js-yaml, and body-parser security f…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T15:18:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "67ce0ad65634f3c75db873a470f34be97b6e7588",
          "body": "Covers the CLI transfer-stall watchdog (fast, phase-labeled errors\ninstead of indefinite hangs), the faster sender exit on decline, the\nweb app's room-confirmed share link, and the Pion dependency updates.",
          "is_bot": false,
          "headline": "docs: changelog for v1.7.6 (#190)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T14:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e075ea5019103b810b98b24d9ee6a7acaaf42d4",
          "body": "An instrumented CI capture showed a sender and receiver both open their\ndata channels (\"Connected\" on both sides) and then hang in total\nsilence: the first metadata message never arrives, the receiver waits\nforever, and the sender burns its full 120 s ack deadline. Real users\nhitting any such stall \n[…]\n unit tests over real pion pairs (including a\nreproduction of the captured stall shape), the race detector, the CLI\ne2e suite, and a live decline simulation (sender exit went from 120 s\nto about 1 s).",
          "is_bot": false,
          "headline": "fix(cli): fail fast when a transfer stalls instead of hanging (#189)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T14:11:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43eb99e8f7fe5e80833c1f16f7db2d810f0bd945",
          "body": "…join (#188)\n\nThe sender rendered its share link the instant it was generated, while\njoin-room was still in flight, so the link was shareable before the\nroom existed server-side. A receiver following the link fast enough\njoined an empty room and was assigned the sender role (first joiner\nwins), and \n[…]\nf so a repeated create\nclick clears the previous room's timer instead of letting a stale\ntimer revert the displayed link to an abandoned room.\n\nNo wire-protocol change; the receiver flow is untouched.",
          "is_bot": false,
          "headline": "fix(client): render the room link only after the server confirms the …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T10:50:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4978fb546e70a2b2b850d861d671370e04da9088",
          "body": "…187)\n\n* chore(ci): add workflow_dispatch and keep e2e evidence from green runs\n\nworkflow_dispatch runs the full suite: the changes job already treats any\nnon-pull_request event as full-suite, so no filter changes are needed. It\nexists to recover from dropped push events (GitHub's event pipeline los\n[…]\ncelled attempt, so\na full re-run would fail at the upload step with a name conflict.\noverwrite: true makes a re-run replace the previous attempt's artifact\ninstead; harvest evidence before re-running.",
          "is_bot": false,
          "headline": "chore(ci): manual dispatch trigger and flaky-test evidence capture (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-21T10:11:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bfc4ded2c463b7380eed3042d99ba3d06877251c",
          "body": "Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 0.562.0 to 1.25.0.\n- [Release notes](https://github.com/lucide-icons/lucide/releases)\n- [Commits](https://github.com/lucide-icons/lucide/commits/1.25.0/packages/lucide-react)\n\n---\nupdated-dependencies:\n\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump lucide-react from 0.562.0 to 1.25.0 in /client (#185)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:43:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f58a198e4f969acbb6d1a6b2ae72954a9803bf45",
          "body": "Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.43 to 26.1.1.\n- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)\n- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)\n\n---\nupdated-de\n[…]\nrect:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @types/node from 20.19.43 to 26.1.1 in /client (#184)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:35:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52b380fd94014ee5885f735499ae59689180cfe9",
          "body": "…ates (#182)\n\nBumps the npm-deps group with 12 updates in the /client directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@number-flow/react](https://github.com/barvian/number-flow/tree/HEAD/src) | `0.6.0` | `0.6.2` |\n| [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/H\n[…]\ne: version-update:semver-patch\n  dependency-group: npm-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the npm-deps group across 2 directories with 16 upd…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T19:07:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "595d79753d61a71b53dd4547c948e0e6d15f02e5",
          "body": "…tes (#177)\n\nBumps the actions-deps group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4.3.1` | `7.0.0` |\n| [actions/setup-node](https://github.com/actions/setup-node) | `4.4.0` | `7.0.0` |\n| [pnpm/action\n[…]\nersion-update:semver-major\n  dependency-group: actions-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(ci): bump the actions-deps group across 1 directory with 7 upda…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T18:38:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1661a962084cd886446629c728324d27558a32e9",
          "body": "… (#176)\n\nBumps the go-deps group with 2 updates in the /cli directory: [github.com/pion/webrtc/v4](https://github.com/pion/webrtc) and [github.com/schollz/progressbar/v3](https://github.com/schollz/progressbar).\n\n\nUpdates `github.com/pion/webrtc/v4` from 4.2.15 to 4.2.17\n- [Release notes](https://g\n[…]\npe: version-update:semver-patch\n  dependency-group: go-deps\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the go-deps group across 1 directory with 2 updates…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T18:31:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a04dbc1cd4070c6d327c3c91e00c0744e72b0e77",
          "body": "The first grouped npm PR bundled 23 updates including two majors, and\none of them (typescript 5 -> 7) breaks typescript-eslint, so the\nwhole PR failed lint and every other update in it was blocked with\nit. Restricting the npm group to minor and patch updates lets the\nroutine bumps flow as one clean \n[…]\nse: JavaScript majors break routinely, Go majors\nchange import paths and rarely flow through version updates at all,\nand the grouped Actions majors already proved compatible by passing\nthe full suite.",
          "is_bot": false,
          "headline": "chore(deps): group only minor and patch npm updates (#181)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T18:02:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "018771ce45f991d64d6d593cea15442fbc250283",
          "body": "Dependabot's first npm version-update job (1466608923) died with npm\nerror EOVERRIDE: \"Override for ws@8.21.1 conflicts with direct\ndependency\". server/package.json lists ws twice: as a direct\ndependency and as a security override for the transitive copies that\nsocket.io's engine.io pulls in, both p\n[…]\n, npm install reproduces the exact EOVERRIDE\nmessage; with \"$ws\" the same bump resolves cleanly. The lockfile\nneeded no regeneration (npm ci passes unchanged) and the server\nsuite stays at 47 passing.",
          "is_bot": false,
          "headline": "fix(server): let the ws override track the direct dependency (#179)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T17:30:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "419d8c3168b6d722fc14a8d328f12bc3e6eb0519",
          "body": "…flow lint gate (#175)\n\n* chore(deps): add Dependabot version updates, monthly and grouped\n\nNothing watched dependency freshness: npm in client/ (pnpm) and\nserver/ (plain npm), Go modules in cli/, and the workflow actions all\ndrifted until something broke or a human remembered. A dependabot.yml\nwith\n[…]\nriod would let\nexactly those edits merge unchecked, and it proves itself on this\nPR's own runs before merge. CLAUDE.md's CI section now records that\nexception to the start-outside-the-gate convention.",
          "is_bot": false,
          "headline": "chore(ci): dependabot version updates, SHA-pinned actions, and a work…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T16:50:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dee2621bcb2ceb358ac6b6c01e16621951e1a2cd",
          "body": "* chore(ci): move the docs-only skip into an in-workflow paths filter\n\nA workflow-level paths-ignore and a required status check cannot\ncoexist: on a docs-only PR the workflow never starts, its checks sit\nat Expected forever, and the PR is unmergeable. A job-level skip has\nthe opposite semantics, si\n[…]\nfor a description of the changes-job mechanism.\n\nThe ruleset change itself (require \"CI green\", squash-only merges)\nis a settings step after this merges; until then the gate is just\nanother green job.",
          "is_bot": false,
          "headline": "chore(ci): in-workflow docs filter and a CI green gate (#173)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T14:22:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "85e07e92b068c025c7d54a6296a11c2281fbdfff",
          "body": "… read-only token (#172)\n\n* chore(ci): serve the e2e client from a production build\n\nnext dev compiles routes on demand; the URL-readiness probe pays the\nhome page compile inside the webServer startup budget, and on macOS\nrunners that first compile repeatedly blew the 120s timeout (3-4\nfailures to d\n[…]\nworkflow is back-compat's\ngh release view/download against this public repo's releases, which\ncontents: read covers; cache and artifact steps authenticate through\nthe runtime token and are unaffected.",
          "is_bot": false,
          "headline": "chore(ci): serve e2e from a production build, npm ci server installs,…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-19T13:04:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5dab25c018c31d8b0c2b2235a804811af3aeca8c",
          "body": "…ect (#171)\n\n* fix(server): remove only the disconnecting peer instead of deleting the room\n\nhandleDisconnect notified the other peer, nulled its roomId, and deleted the\nwhole room whenever ANY peer's socket dropped. One Socket.IO blip on either\nside therefore killed the room: the sender's displayed\n[…]\nnes), which is also the production code path since real\ndeployments never run on \"localhost\".\n\nE2E matrix legs now report 17 passed, 4 skipped (was 15/4); the\nback-compat job is unaffected (4 passed).",
          "is_bot": false,
          "headline": "fix: signaling room survives disconnects and clients rejoin on reconn…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T19:11:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41c4af0d85f7989b5f7970ced1aaed73a13ac7c3",
          "body": "…CLI (#169)\n\n* test(e2e): let spawnSend/spawnReceive target an explicit CLI binary\n\nBoth helpers hardcoded cliBinary(), the HEAD build from global-setup.\nThe upcoming back-compat spec drives a downloaded release binary\nthrough the same plumbing, so accept the binary path as a trailing\nparameter defa\n[…]\nnd spawnReceive now buffer both streams and append their\ntails (last 500 chars) to every rejection, including timeouts, so the\nnext transient failure names itself. No behavior change on success\npaths.",
          "is_bot": false,
          "headline": "chore(ci): add back-compat job pairing HEAD with the latest released …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T17:07:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "581165aedf8ec17d8c1678e67b1f942c768802d0",
          "body": "…age (#168)\n\n* test(e2e): build the CLI once in global setup and extract shared helpers\n\nThe CLI binary used to be built in cli-interop.spec.ts's beforeAll into a\nshared tmp path, which races when two spec files run in parallel locally\n(one worker rebuilds the exe while another worker's spawned proc\n[…]\n: fail loudly on an unknown RUNNER_OS in the Playwright cache step\n\nWithout a default arm the case would emit an empty cache path for a\nfuture matrix OS and fail the cache step confusingly downstream.",
          "is_bot": false,
          "headline": "chore(ci): matrix e2e across 3 OSes and add CLI-to-CLI transfer cover…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T14:33:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd13d606a7d9fef6c495f10835e142ff5bb2b0d6",
          "body": "Release binaries print \"floe 1.7.5\", not \"floe v1.7.5\": GoReleaser\ninjects {{ .Version }}, which strips the tag leading v before it\nreaches main.version. Align the sample output blocks on the\ninstallation and version pages with what the shipped binary prints.\nThe Docs: line is printed by the version subcommand and stays.",
          "is_bot": false,
          "headline": "docs(cli): drop the v prefix from floe version sample output (#167)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:18:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46982510be26ad0e83af92ddb8e393972f9e9594",
          "body": "… (#166)\n\nFLOE_VERSION=vX.Y.Z curl ... | sh sets the variable only for curl; the\nsh process running the installer never sees it and silently installs\nthe latest release instead of the requested one. Move the assignment to\nthe sh side of the pipe in the docs example, the script usage comment,\nand the could-not-determine-version error hint. The installer's own\nversion handling is unchanged and was always correct once the variable\nactually reaches sh.\n\nFixes #164",
          "is_bot": false,
          "headline": "fix(installer): correct FLOE_VERSION usage in pinned-install examples…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:14:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "227d19025b355bdcc0773fd180673d7bd87d308a",
          "body": "… (#165)\n\n* chore(ci): matrix cli job across ubuntu, windows, and macos\n\n- run go vet/test/build on ubuntu-latest, windows-latest, and\n  macos-latest with fail-fast disabled so one OS failure never hides\n  another; setup-go keeps per-OS cache keys automatically\n- add workflow-level concurrency: supe\n[…]\nge_json_file at client/package.json, which already\ndeclares packageManager: pnpm@11.1.2. One place to bump from now on.\n\nIsolated on purpose: revert this commit alone if the action misreads\nthe field.",
          "is_bot": false,
          "headline": "chore(ci): matrix cli job across 3 OSes, add timeouts and concurrency…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-18T12:00:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c8d61963ef1e18c2377fb11ce99f412abaa61bd",
          "body": "Trim the Development acknowledgment and badge to match the lowkey, one-line style of the Sentry and Mintlify credits. Drops the plan tier and duration.",
          "is_bot": false,
          "headline": "docs(readme): simplify the Anthropic sponsorship credit (#163)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-17T17:26:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e52ac4a0f8fab1f5dfadd781b1187e41ed7b917c",
          "body": "Credit Anthropic in the Acknowledgments section for accepting Floe into its open source program (six months of Claude Max, 20x), add a matching badge, and broaden the intro line to cover development tooling alongside runtime infrastructure.",
          "is_bot": false,
          "headline": "docs(readme): acknowledge Claude Max (20x) OSS sponsorship (#162)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-17T17:13:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0daddaddc917bdbe9bd923d3fa68f280b4d835f",
          "body": "* docs: improve SEO titles and descriptions across docs\n\n* docs: correct encryption description to DTLS (data channels use DTLS, not DTLS-SRTP)\n\n---------\n\nCo-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>\nCo-authored-by: Jc Paredes <paredesjancarlo99@gmail.com>",
          "is_bot": true,
          "headline": "Apply SEO and metadata best practices (#161)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-07-17T17:03:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ed75ebb1d77f3a3872b8149dced3594560ac1e9",
          "body": "…#160)\n\nA share link always carries a valid UUID room id, but a hand-edited or\ntruncated #room fragment can carry a malformed one. The signaling server\nrejects such a join with an 'error' event the browser does not listen for,\nso the receiver sat on \"Waiting for the sender\" indefinitely.\n\nMirror the\n[…]\nLink Invalid\"\ncard (the same one the room-full path uses) rather than an endless wait;\nvalid ids are unaffected.\n\nAdds client/e2e/invalid-room.spec.ts covering both the rejected and the\naccepted path.",
          "is_bot": false,
          "headline": "fix(client): reject malformed room links instead of waiting forever (…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-11T18:15:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "37ce9d66c9427890a3ce64735eae46ebd1ec0428",
          "body": "…responsive hardening (#159)\n\n* feat(client): redesign homepage below the hero with premium landing sections\n\nReplace the About icon row with four new sections: a How it works step sequence, a privacy ledger listing exactly what the signaling server handles and never sees, a CLI section with per-OS \n[…]\nonto its own second line at every width\n- Refine privacy and how-it-works copy on how the room id rides the URL fragment\n- Add client/e2e/responsive.spec.ts: a 15-viewport (320 to 2560) overflow guard",
          "is_bot": false,
          "headline": "feat(client): redesign homepage, transfer card, and legal pages with …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-11T18:04:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87dd8324bfc4f5fcc0eb1d6f5576cb2eaec8b969",
          "body": "Covers the delivered-bytes progress fix, the receiver progress cadence fix,\nthe CLI backpressure-stall abort fix, and the direct/relay copy clarification.",
          "is_bot": false,
          "headline": "docs: add v1.7.5 changelog (#158)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-10T06:53:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a607da26f3d9dbf19dc3add54a2758532ff8991",
          "body": "… stay in sync (#156)\n\nThe sender counted bytes queued into the data-channel buffer as sent: with the\n8 MB high-water mark it ran up to 8 MB ahead of the receiver, froze all UI\nupdates for the 40-60 s the buffer took to drain on a slow relay, advanced the\nfile label a whole file early, and declared \n[…]\n\nthan a flat 60 s to drain, killing transfers on relays slower than ~70 KB/s.\nIt now aborts only when the buffer makes no progress for a full 60 s window.\n\nNo wire changes; protocol version unchanged.",
          "is_bot": false,
          "headline": "fix(transfer): report delivered bytes so sender and receiver progress…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T19:38:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d183570a2d5439095690d42505eff5adc3f88a7b",
          "body": "…py (#155)\n\n* fix(client): show direct-connection scope in badge, clarify relay fallback copy\n\nThe status badge now distinguishes Direct (same network), a host-host pair,\nfrom Direct (internet), a hole-punched P2P path, with scope-aware tooltips,\nso a direct connection over mobile data no longer rea\n[…]\nt\nsuffix. The tooltip and FAQ keep the explanation that direct paths span\ndifferent networks, including mobile data. classifyCandidatePair slims down\nto isRelayPair since scope is no longer displayed.",
          "is_bot": false,
          "headline": "fix(client): clarify direct/relay badge tooltip and relay fallback co…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T18:58:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "471203cd26316500fe7daaac19f7798ab8480142",
          "body": "…ms (#154)\n\nThe relay-connection page listed the full Cloudflare endpoint set (:5349 TLS\nplus TCP fallbacks on 80/443); the server now serves a minimal three-URL set,\nso describe that and why. Two pages still said the CLI sends fixed 16 KB\nchunks; both senders have been adaptive up to 256 KB since v1.7.3.",
          "is_bot": false,
          "headline": "docs: add v1.7.4 changelog; align relay endpoints and chunk-size clai…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:52:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf552ec8072be02271239b94fd09e8582e187cd4",
          "body": "Defense-in-depth companion to the server-side trim: pion gathers candidates\nand opens TURN allocations per URL per network interface, so a server that\nforwards a provider's full redundant list (Cloudflare mints 8 URLs) multiplies\nconnection-setup work. On multi-adapter machines this pushed \"Connecti\n[…]\nt\nlike self-hosted coturn's passes through unchanged, and an unclassifiable\nlist is left alone. Protects the CLI against any server, including\nself-hosted instances and a not-yet-updated api.floe.one.",
          "is_bot": false,
          "headline": "fix(cli): trim fetched ICE list to one URL per connectivity class (#153)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:38:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab1bc164c423eac2c1f003084475981028b8ea7d",
          "body": "…ss (#152)\n\nThe Cloudflare TURN migration started serving all 8 URLs Cloudflare mints\n(STUN on :3478/:53 plus TURN duplicated across udp/tcp/tls on\n:53/:80/:443/:3478/:5349). WebRTC clients gather candidates and open TURN\nallocations per URL per network interface, so the redundant URLs multiplied\nIC\n[…]\nerving the client relay-off filter contract. The\ncoturn fallback already returns exactly 3 URLs and is untouched.\n\nServer-side only: every existing browser and CLI benefits on deploy without\nupdating.",
          "is_bot": false,
          "headline": "fix(server): trim Cloudflare ICE list to one URL per connectivity cla…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T16:36:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97302a7e9a8e25229f9e913ce310f736675612d8",
          "body": "…ing tab (#151)\n\nTransfer links carried the room id only in the URL fragment (#room=<id>),\nso two links differ only by fragment. Browsers treat a fragment-only change\nas the same document: when a phone that already has Floe open scans a second\nQR code, it reuses the stale tab and swaps the hash with\n[…]\n to the server); the nonce carries no info.\n\nAs a safety net, also reload on hashchange when the room id changes, covering\nany browser that still performs a fragment-only navigation into the same tab.",
          "is_bot": false,
          "headline": "fix(client): join the new room when a fresh QR link opens in an exist…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T15:50:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2cddb28f2cb4cac034b39b950ec010d6d7bc29c",
          "body": "… --iface (#150)\n\n* fix(cli): skip link-local interfaces during ICE gathering\n\nOn machines with virtual/VPN adapters (Hyper-V, WSL, VMware, Tailscale) or\nAPIPA auto-config, pion gathered a host candidate on every link-local\n(169.254.0.0/16, fe80::/10) interface and spent 20-30s running connectivity\n\n[…]\nption (peer.WithInterfaceAllowlist) so peer.New\nstays backward compatible. Documents the flag and a troubleshooting entry for\nslow connects behind a VPN/VM. Adds a unit test for the allowlist matcher.",
          "is_bot": false,
          "headline": "fix(cli): skip link-local interfaces during ICE gathering, add opt-in…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T15:35:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b4388a55c7439388e4f7af824b4b49fe35ed8a1",
          "body": "CLI adaptive chunk sizing (up to 256 KB) plus the browser-to-CLI\nslow-accept timeout fix, both landed since v1.7.2.",
          "is_bot": false,
          "headline": "docs(changelog): add v1.7.3 entry (#149)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T14:22:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1affc379ac687080ad707bf5d20f0e6fc3ff84a",
          "body": "… (#148)\n\nThe CLI sender sent every file in fixed 16 KB chunks, so a transfer made ~16x\nmore dc.Send calls than the browser, which already sizes chunks to the\nnegotiated SCTP max-message-size capped at 256 KB. Each send carries fixed\nSCTP framing and per-call overhead, so the small chunk caps throug\n[…]\nange, so no ProtocolVersion bump and full browser<->CLI\ncompat holds. Adds a table-driven chunkSizeFor test; the existing 20 MB\nsha256-verified loopback now exercises the larger-chunk path end to end.",
          "is_bot": false,
          "headline": "perf(cli): size send chunks to the negotiated SCTP max (up to 256 KB)…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-09T14:11:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ff599b2d05aad64f1043606e13d8cebba709eda",
          "body": "A full audit of the 34 tracked md/mdx files found eight still describing the pre-migration TURN setup (coturn as the only relay, 'TURN_SECRET unset means STUN-only', Google-only STUN, missing CLOUDFLARE_TURN_* env vars). Update them to match server.js precedence (Cloudflare Realtime TURN, then cotur\n[…]\nged and self-hosted paths, and a security-privacy note naming Cloudflare as floe.one's relay operator. coturn remains fully documented as the self-hosting option. changelog.mdx deliberately untouched.",
          "is_bot": false,
          "headline": "docs: align all md/mdx with the Cloudflare TURN migration (#147)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-08T10:20:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05b72250e226a79aa02c50db85ade3f2942605d1",
          "body": "Production floe.one now relays via Cloudflare Realtime TURN, not the old self-hosted coturn at turn.floe.one. Update the privacy policy, relay-connection page, and architecture reference to name Cloudflare (turn.cloudflare.com) as the production relay and the Microsoft Azure signaling host, while keeping coturn documented as the self-hosting option. No turn.floe.one references remain.",
          "is_bot": false,
          "headline": "docs: point production TURN references at Cloudflare (#146)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-08T09:38:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2f2b38984d78e35c9c020e4223c01801213a7fd",
          "body": "C:/Program Files/Git/api/turn-credentials now mints short-lived ICE servers from Cloudflare Realtime TURN when CLOUDFLARE_TURN_KEY_ID / CLOUDFLARE_TURN_KEY_API_TOKEN are set, caching one set in memory (12h) and splitting STUN from TURN so the client relay-off filter still works. Falls back to self-hosted coturn (TURN_SECRET / TURN_DOMAIN), then public STUN. Client and CLI consume the ICE list generically and need no changes.",
          "is_bot": false,
          "headline": "feat(server): add Cloudflare Realtime TURN with coturn fallback (#145)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-07T12:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "568483e6889cd43c537908212ba650ebcf4b2e05",
          "body": "…m (#144)\n\n* fix(client): raise sender ack timeout to 120s to match CLI\n\nThe browser sender aborted after 15s waiting for the receiver's ack, but a\nCLI receiver only acks after a human answers its interactive \"Accept? [Y/n]\"\nprompt. A receiver slower than 15s caused browser-to-CLI transfers to fail\n\n[…]\nr, but the signaling server relays the fingerprints and is\ntherefore trusted to relay them faithfully. Reword to state the real\nguarantee and note that self-hosting removes the third-party dependency.",
          "is_bot": false,
          "headline": "fix: raise browser sender ack timeout to 120s; correct MITM docs clai…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-07-06T14:47:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88a429b5e26dcff6af33a93be5fc4ed0f743032a",
          "body": "The client image failed to build (docker compose up --build). Bump the client builder/runner to node:22-alpine (pnpm 11.x needs Node 22+ for node:sqlite), pin pnpm@11.1.2 to match packageManager, and copy pnpm-workspace.yaml into the install stage so the lockfile overrides resolve. Verified the full stack builds and serves from a clean fork with no secrets.",
          "is_bot": false,
          "headline": "fix(docker): repair the client image build for self-hosting (#143)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T16:44:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c24a4707d72fcdf4ee757259db5a7c0179665ab",
          "body": "Make the CONTRIBUTING.md client-only workflow consistent: tell contributors to set NEXT_PUBLIC_SOCKET_URL=https://api.floe.one (the .env.example ships localhost:3001), note the client+server flow already defaults to localhost:3001, and correct the env-table default.",
          "is_bot": false,
          "headline": "docs: fix client-only setup to point at the live signaling server (#142)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T16:04:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c6bee639f9a1ca5c72ff5c5a821fef1d303ebe",
          "body": "Add the three env vars that drifted out of CONTRIBUTING.md: NEXT_PUBLIC_SITE_URL (client, #123) and MAX_CODE_REQUESTS_PER_IP + MAX_ACTIVE_CODES (server, #122), matching the .env.example files and the configuration reference.",
          "is_bot": false,
          "headline": "docs: sync CONTRIBUTING env tables with current env vars (#141)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T15:05:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37e1b924ffa30a76552e46b43dc5f9e4580996db",
          "body": "Document the v1.7.2 CLI release: floe send now prints a #room= fragment link and floe receive resolves both #room= and legacy ?room= links.",
          "is_bot": false,
          "headline": "docs: add v1.7.2 changelog entry (#140)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T14:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "252803266cfb703cdfbde80dbe829c0a56c01c8f",
          "body": "Move the receiver's completed-files list (checkmark, name + tooltip, size, per-file download link) into a presentational ReceivedFilesList component. The shared fileListRef passes down as a listRef prop; the parent's auto-scroll effect is unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ReceivedFilesList from P2PTransfer (#139)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a86a6638e9de5a9f633ecd70710b97465ceb3fab",
          "body": "Move the sender's queued-files list (icon, name + tooltip, size, per-row delete/checkmark/spinner) into a presentational SelectedFilesList component. The shared fileListRef passes down as a listRef prop; the parent's auto-scroll effect is unchanged. FileIcon import relocates with it.",
          "is_bot": false,
          "headline": "refactor(client): extract SelectedFilesList from P2PTransfer (#138)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:33:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "337bdfaacc4b2fe6fd870b0d97d83e2971a63b55",
          "body": "Move the active-transfer progress row (label, speed/ETA, percentage, bar) into a presentational TransferProgressBar component, relocating the Progress UI import with it. Rendered under the existing progress > 0 guard; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract TransferProgressBar from P2PTransfer (#137)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:26:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4a0c94b920295b44b59cb20e427f7c69bd0c922",
          "body": "Move the sender's share panel (link text, Copy/QR/Share buttons, QR code, status line) into a presentational ShareLinkPanel component, relocating the QRCodeSVG and Check/Copy/QrCode/Share2 imports with it. State and handlers stay in P2PTransfer; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ShareLinkPanel from P2PTransfer (#136)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:21:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0de49d5d9385093ac3e64d5188123f2ea8397188",
          "body": "…135)\n\nMove the receiver's \"Contribute to global stats\" opt-out checkbox card into a presentational StatsContributionToggle component. The opt-out state and its localStorage persistence stay in useTransferAnalytics; DOM and behavior unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract StatsContributionToggle from P2PTransfer (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:15:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "329628ac7f656abae5f567484abcb40526cb31d4",
          "body": "Move the sender's Network Relay Fallback checkbox card (and its disabled-state warning) into a presentational RelayFallbackToggle component. State stays in P2PTransfer via useRelayConfiguration; DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract RelayFallbackToggle from P2PTransfer (#134)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:11:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a581026838ac94347876dfb9ddaf146ebabdf6",
          "body": "Move the connection status indicator (Wifi/ping, direct/relay/ready/offline dot, Info tooltip) into a presentational ConnectionStatusBadge component that owns the tooltip open/close state and its two effects. P2PTransfer drops ~78 JSX lines + 1 state + 2 effects; behavior and DOM unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract ConnectionStatusBadge from P2PTransfer (#133)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T11:02:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "494081b144fe9e0581abda0553f4fbad9cf7a0b2",
          "body": "Pull the duplicated \"expected vs unexpected\" check and analytics reason mapping out of both peer error handlers into a pure, unit-tested classifyPeerError() in lib. Side effects (Sentry, setError, track, setStatus) stay inline. Adds 10 unit tests covering paths e2e cannot reliably trigger. No behavior change.",
          "is_bot": false,
          "headline": "refactor(client): extract classifyPeerError from P2PTransfer (#132)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:39:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e695adafb5be4e88a7dd1a2e6304f5018c7759d",
          "body": "Move the relay policy into a pure, unit-tested lib/relay.ts (RELAY_SIZE_LIMIT, filterIceServers, evaluateRelayGate) plus a thin useRelayConfiguration hook for the relayEnabled toggle. The sender's ICE filter and validation block now call these helpers; all side effects (status, error, Sentry, peer.destroy, sendAllFiles) stay inline and behave identically. Adds 9 unit tests covering the relay-block paths e2e does not reach.",
          "is_bot": false,
          "headline": "refactor(client): extract useRelayConfiguration from P2PTransfer (#131)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:27:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bafbb506bf95a2b737ce97b27c1623e81f94485a",
          "body": "Move Umami tracking and the global stats report into a useTransferAnalytics hook: the UmamiWindow interface, reportStatsEnabled state + both localStorage effects, a guarded track() wrapper, and reportBytes(). Replaces 4 inline umami.track call sites and collapses the receiver's stats-report block. Sentry stays inline.",
          "is_bot": false,
          "headline": "refactor(client): extract useTransferAnalytics from P2PTransfer (#130)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-30T10:16:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "515bdd067b72ad0b306a4b54ce5b1d3b934d17d5",
          "body": "Document the per-IP /api/code rate limit (MAX_CODE_REQUESTS_PER_IP), the active-code cap (MAX_ACTIVE_CODES, 503 when full), and the switch to crypto.randomInt (CSPRNG) for room-code generation. Tracks #122.",
          "is_bot": true,
          "headline": "docs: signaling rate limits and CSPRNG room codes (#127)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-06-29T14:49:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4af9e16d86728c1d98d638adff68549ef63617a",
          "body": "Document the room-secret URL fragment and the NEXT_PUBLIC_SITE_URL build-time variable, fix the stray ?room= CLI example, and correct the documented NEXT_PUBLIC_SITE_URL default to https://www.floe.one.",
          "is_bot": true,
          "headline": "docs: fragment share links and site URL config (#126)",
          "author_name": "mintlify[bot]",
          "author_login": "mintlify[bot]",
          "committed_at": "2026-06-29T14:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe798167d9ec78402a64e81583c5c441dcb1a100",
          "body": "Fourth step of decomposing P2PTransfer.tsx into focused hooks. Move the\ndirect-vs-relay detection (checkConnectionType reading peer ICE stats, plus its\n5s polling interval and the connectionType state) into\nclient/hooks/useConnectionType.ts.\n\nThe hook returns { connectionType, startPolling, stopPoll\n[…]\nnalytics,\nfloe-connection-status dispatch) are unchanged.\n\nDeliberately untouched: the sender's separate inline getStats relay-fallback\nvalidation, which is a different concern and not covered by e2e.",
          "is_bot": false,
          "headline": "refactor(client): extract useConnectionType from P2PTransfer (#129)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-29T09:41:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d777460df9e528b022caebb2b432307388872167",
          "body": "Third step of decomposing P2PTransfer.tsx into focused hooks. Move the\nSocket.IO transport into client/hooks/useSignaling.ts: the socket singleton,\nisConnected + ping state, the 2s ping loop, and the\nconnect/disconnect/connect_error/reconnect/signal/peer-disconnected listeners.\n\nThe hook is peer- an\n[…]\nnectError, onReconnect) back to the component via callbacks.\nPeer/WebRTC creation stays in the component (next extraction). The component\nnow holds no direct socket reference. No wire-protocol change.",
          "is_bot": false,
          "headline": "refactor(client): extract useSignaling from P2PTransfer (#128)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-29T09:22:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbc4c271fb084e7f00e9c64d50539fd05ffd0472",
          "body": "Second step of decomposing P2PTransfer.tsx into focused hooks. Move the\nreceiver-side download orchestration (Download All + Download ZIP via fflate)\nand its progress state (isZipping, isDownloading, downloadProgress) into\nclient/hooks/useDownloadManager.ts, along with the ReceivedFile type and the\n\n[…]\nhavior-preserving: the component passes receivedFiles (read-only) and\nsetError into the hook. The per-file <a download> links, the iOS ZIP tip, and\nthe receiver connection logic stay in the component.",
          "is_bot": false,
          "headline": "refactor(client): extract useDownloadManager from P2PTransfer (#125)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T18:50:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77eb144428793016ab6b982f6574415b089eb298",
          "body": "First step of decomposing the 1.5k-line P2PTransfer.tsx into focused hooks,\nmirroring the cli/engine/ split. Move the sender's file-selection concern\n(files, isDragging, totalBytes, and the pick/drag/drop/delete handlers) into\nclient/hooks/useFileManagement.ts.\n\nBehavior-preserving: the component no\n[…]\n currentFileIndex\nstays in the component because it tracks transfer progress, not selection.\nThe Playwright e2e (which drives file selection via setInputFiles) is the\nguard that behavior is unchanged.",
          "is_bot": false,
          "headline": "refactor(client): extract useFileManagement from P2PTransfer (#124)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T18:19:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82cedb941290e31416be31f4b2f11086de9f2657",
          "body": "* fix(client): keep the room secret out of analytics; trim trackers\n\nAddresses reviewer feedback on lissy93/awesome-privacy#643.\n\n- Move the room id from the ?room= query param to the URL fragment\n  (#room=) so it never reaches servers, the Referer header, or pageview\n  analytics. getRoomFromUrl() s\n[…]\nlaywright specs to expect #room= for browser- and\n  CLI-generated links.\n- docs: show the /#room= link format in the CLI and web-app guides.\n\nFixes the E2E CI job on #123, which still expected ?room=.",
          "is_bot": false,
          "headline": "fix(client): keep the room secret out of analytics; trim trackers (#123)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-28T17:47:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6136cb7776e037038136cfcd203b5a2711a41358",
          "body": "…uting (#122)\n\nSecurity hardening of the signaling layer. Server-only: no transfer-protocol,\nclient, or CLI change, and old peers are unaffected.\n\n- Rate-limit the code endpoints. Add a per-IP limiter to POST /api/code and\n  GET /api/code/:code through a shared makeRateLimiter middleware (default\n  \n[…]\ndeRateLimits export check; generateCode tests now inject the picker.\nDocs: CLAUDE.md rate-limiting section and server/.env.example updated; e2e\nconfig lifts the new limiter so the suite can't trip it.",
          "is_bot": false,
          "headline": "fix(server): rate-limit /api/code, CSPRNG room codes, scope signal ro…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T10:51:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ab25caf8eca1b8c5edaa12f75c9c8f328f852948",
          "body": "…121)\n\nThe literal space between </strong> and the following text was not\nsurviving in the rendered DOM for this list item (the other three items\nrender fine), so /privacy showed \"Aggregate Transfer Total:When a\ntransfer...\". Use an explicit {' '} token, matching the spacing idiom\nalready used elsewhere in this <li>, so the space is preserved by\nconstruction.",
          "is_bot": false,
          "headline": "fix(client): restore space after \"Aggregate Transfer Total:\" label (#…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T10:03:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b470ec22b4743f1bb7ddc233cf1557286509009b",
          "body": "The architecture reference pinned the floe release line at 1.6.x, but the\ncurrent release is 1.7.x. Reword the parenthetical to 'the 1.x line' so the\nProtocol versioning section stays accurate across future 1.x releases without\nneeding another edit on each bump. Protocol version itself is unchanged (1).",
          "is_bot": false,
          "headline": "docs: make protocol-versioning note version-neutral (#120)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T09:51:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a99bb9fc55c92c94c40ca51b6a8b809d9655f47e",
          "body": "…t (#119)\n\n- Reorder nav to Try Floe / How It Works / Documentation / CLI / Self-Hosting / Contributing\n- Add Latest release and Build status badges; group flat badges before social\n- Fix blue underline on badge rows by collapsing each anchor onto one line\n- Tighten Quick Start copy and drop the redundant \"visit floe.one\" line",
          "is_bot": false,
          "headline": "docs(readme): refresh top nav, add release/CI badges, tidy quick star…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-27T06:11:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41f26093f0420be427f76891f012e4e95c749157",
          "body": "The Documentation Site section exposed Mintlify vendor/account config\n(credit quota, billing guardrails, automation cadence, intentionally-OFF\nroadmap) that is not code guidance and has no value in a public file.\n\nReplace it with a lean Documentation Site section that keeps only the two\ncodebase-relevant facts: changelog.mdx is hand-written, and CI skips\ndocs-only PRs via paths-ignore. The dropped operational details now live\nin private docs and the Mintlify dashboard.",
          "is_bot": false,
          "headline": "chore(docs): trim internal ops and billing details from CLAUDE.md (#118)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T20:38:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0966aa13da0af965faefab6d6f14302d5f813f3",
          "body": null,
          "is_bot": false,
          "headline": "chore: normalize CLAUDE.md to LF line endings (#117)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T20:07:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb41b5e6cca1e20714b6151739bdd69896f9048d",
          "body": "…r (#116)",
          "is_bot": false,
          "headline": "docs: instruct Claude Code to omit AI co-author and attribution foote…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T19:56:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3a1e5a37c70f1c8ee7543dd29252be16bdefd65",
          "body": "…set (#115)\n\nReplaces the stock create-next-app Vercel-triangle favicon with the Floe lightning bolt; adds apple-icon, web manifest with maskable icons, viewport themeColor, and removes the unused root icon.svg.",
          "is_bot": false,
          "headline": "fix(client): replace default Vercel favicon with Floe lightning icon …",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-26T19:49:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a91624ae80c60e5e0323dcfb191ada2bac95173c",
          "body": "Forward UPSTASH_REDIS_REST_URL/TOKEN, MAX_REPORT_BYTES, and MAX_CONNECTIONS_PER_IP to the server container so durable global-stats and the override knobs work under Docker as documented. Also bump client/Dockerfile pnpm 10->11 and note localhost:3000 in the production CORS section.",
          "is_bot": false,
          "headline": "fix(self-hosting): forward stats/limit env vars in docker-compose (#114)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-25T18:12:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbbae85b815c803e7b8acee11ccc667f06ad92a1",
          "body": "…#113)\n\nAdds a deterministic, free Vale config to enforce Floe's no-em-dash rule on\nthe docs, complementing the Mintlify \"Apply style guide\" automation:\n\n- docs/.vale.ini: Floe-only style with MDX/JSX-aware ignores\n- docs/styles/Floe/EmDash.yml: flags the Unicode em dash as an error\n\nAdds paths-igno\n[…]\n no\nrequired status checks, so docs PRs stay mergeable.\n\nDocuments the Mintlify OSS docs pipeline and the four review automations in\nCLAUDE.md.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(docs): add Vale no-em-dash check and skip CI on docs-only PRs (…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-25T14:09:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d3a93aacab34961dbacc1e334107af8c9bb1c02",
          "body": "…jection\n\nfix(client): ignore browser-extension promise rejection in Sentry",
          "is_bot": false,
          "headline": "Merge pull request #112 from jannskiee/fix/sentry-ignore-extension-re…",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-24T08:07:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39d12fca4221108fd9c26304c6bed4b7a6fbe183",
          "body": "Privacy/anti-fingerprint browser extensions bridge to native desktop\nsoftware and reject a promise with a plain object when that bridge is\nnot ready, surfacing as \"Object Not Found Matching Id:N, MethodName:...,\nParamCount:N\". This is not Floe code (no stack trace into our bundle,\n0 users affected),\n[…]\nignature to ignoreErrors. Kept narrow rather than filtering all\n\"Non-Error promise rejection captured\" so real promise rejections still\nreport.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): ignore browser-extension promise rejection in Sentry",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-24T08:03:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d0d0e72a3419a003fd783a644c6326eb3569a273",
          "body": "fix(client): define xs breakpoint and use dvh for mobile viewport height",
          "is_bot": false,
          "headline": "Merge pull request #111 from jannskiee/fix/mobile-responsive-breakpoint",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T20:43:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2751f17cd9792ef086f571514e1b076a47d42dc9",
          "body": "The receiver's \"Download All\" / \"Download ZIP\" buttons used xs:grid-cols-2,\nbut xs was never defined as a Tailwind v4 breakpoint, so the class was inert\nand the buttons stayed stacked in one column until the sm (640px) breakpoint.\nDefine --breakpoint-xs: 30rem in globals.css so the two-column layout\n[…]\ne height tracks the dynamic mobile\nviewport rather than 100vh, which ignores mobile browser chrome.\n\nBoth changes are CSS-only and DOM-neutral.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): define xs breakpoint and use dvh for mobile viewport height",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T20:39:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b5a75c7627e2bf7f34997d3529802f5abb29363",
          "body": "fix(client): align privacy policy with actual data handling",
          "is_bot": false,
          "headline": "Merge pull request #110 from jannskiee/fix/privacy-policy-accuracy",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:59:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f79824cbe8318ddab807fc8460639a8eb4461f0d",
          "body": "- Sentry session replay now masks all text and blocks media\n  (maskAllText/blockAllMedia: true) so file names and on-screen\n  content are never captured, upholding the privacy policy's promise.\n- Disclose Vercel Analytics and Speed Insights, which run on every\n  page load but were previously undocumented.\n- Correct the session-replay description: replays are sampled across\n  sessions, not captured only when an error occurs.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): align privacy policy with actual data handling",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:59:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "26bfd303f335671fcfb754ba18f10e3ca68e0d89",
          "body": "docs: document receiver stats toggle and add v1.7.1 changelog entry",
          "is_bot": false,
          "headline": "Merge pull request #109 from jannskiee/docs/global-stats-receiver-ui",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:41:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "863f8422258c6390005e97bd4281156667c791dc",
          "body": "- Add a \"Contribute to global stats\" section to the web-app receiving\n  guide, matching the relay-toggle section in the sending guide.\n- Mention the receiver stats toggle and CLI --no-report / FLOE_NO_STATS\n  in the quickstart receiver flows (browser and CLI).\n- Add the global stats counter to the rate-limit list in troubleshooting.\n- Add the missing v1.7.1 changelog entry (reliable CLI counter reporting).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document receiver stats toggle and add v1.7.1 changelog entry",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T14:40:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0567aeb9bb96247a75576e4855347e25ea41776f",
          "body": "fix(cli): ensure stats report completes before program exits",
          "is_bot": false,
          "headline": "Merge pull request #108 from jannskiee/fix/stats-report-race",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:53:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76bae41c4f154a978c1f8bb0a758e1119c3909cf",
          "body": "reportBytesToServer was launched as a goroutine before the grace-period\nselect. When a CLI sender closes the data channel immediately on receiving\nthe \"received\" ack, done fires, the select returns, and the program exits\n-- killing the goroutine mid-HTTP-request. Large transfers (4+ GB)\nfailed to re\n[…]\n of this race.\n\nFix: move the call to after the select so it runs synchronously. It has\nits own 5s HTTP timeout and cannot hang indefinitely.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): ensure stats report completes before program exits",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:52:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6af892d6cc7eb80a4da43c026f5afb299df5ab92",
          "body": "feat: add opt-out for global transfer counter (CLI + browser)",
          "is_bot": false,
          "headline": "Merge pull request #107 from jannskiee/feat/stats-opt-out",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:25:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e04509cd110386076d0f83f153c9fbba3da0f385",
          "body": "- CLI: add --no-report flag to floe receive and FLOE_NO_STATS=1 env var.\n  Both gate reporting by passing an empty statsURL into ReceiveFiles,\n  hitting the existing if serverURL == \"\" guard in reportBytesToServer.\n  No change to ReceiveFiles signature or receiver.go logic.\n\n- Browser: add a Contrib\n[…]\n, receive/send pages, FAQ\n  (new opt-out Q&A), security-privacy, architecture, signaling how-it-works,\n  privacy page, README, and CLAUDE.md.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add opt-out for global transfer counter (CLI + browser)",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T11:23:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a89f100a8498afba57a2786039ff17fbf2293f8",
          "body": "docs: clarify Upstash counter needs the read+write REST token",
          "is_bot": false,
          "headline": "Merge pull request #106 from jannskiee/docs/upstash-readwrite-token",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:40:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89bc42845d7e10fb071855d82b099f681e791786",
          "body": "The read-only Upstash REST token silently breaks the global transfer\ncounter: the server's INCRBY is rejected with NOPERM and the total never\npersists (it only lives in memory and resets on restart). Document in\nserver/.env.example and the self-hosting configuration reference that the\nread+write token is required.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: clarify Upstash counter needs the read+write REST token",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:40:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0e8e46c41987b1647c9fbe7e472d9809cc8ab469",
          "body": "fix(client): report global counter once per transfer, not per file",
          "is_bot": false,
          "headline": "Merge pull request #105 from jannskiee/fix/global-counter-per-transfer",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47f4bce3a79c57251fa95ab4b17244b1ae9ceb13",
          "body": "The browser receiver fired a POST /api/stats/report and an optimistic\nfloe:bytes-reported event for every completed file. On large multi-file\ntransfers this overran the server's per-IP report rate limit (60/min),\nso most reports were dropped with 429 and the persisted total badly\nunder-counted (e.g.\n[…]\nanimation per transfer, no\nrate-limit drops, and an accurate persisted total. No server or CLI\nchange (the CLI receiver already reported once).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(client): report global counter once per transfer, not per file",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:32:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a61e8e3b164c8c1f5efea51f4bec240811f7ae4",
          "body": "docs: document the global transfer counter feature",
          "is_bot": false,
          "headline": "Merge pull request #104 from jannskiee/docs/global-transfer-counter",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:04:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "896fe3b22c3cc98baca009175fc9ee671e0d15f4",
          "body": "Document the new public, all-time global transfer counter across the\ntechnical, self-hosting, and user-facing privacy docs.\n\n- CLAUDE.md: add a Global Stats Counter architecture section, note the\n  third (stats) rate limiter, and add the Upstash/cap env vars.\n- docs/reference/architecture.mdx: add /\n[…]\ny what the\n  counter records (one anonymous byte total) and what it does not (file names,\n  contents, per-transfer records, identity/IP links).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document the global transfer counter feature",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T07:03:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d686eb0bf7032e3dc89012fbed98f0d8f855e5ac",
          "body": "feat: global transfer counter with rolling-number animation",
          "is_bot": false,
          "headline": "Merge pull request #103 from jannskiee/feat/global-transfer-counter",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:49:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed57caa82587d467de9d7dfce716e6e41c6b2039",
          "body": "Drop the bordered card layout for the global transfer stat in favor of a\nsingle centered line. Tune NumberFlow spin/transform/opacity timing for a\nsmoother odometer roll, and mount at 0 so the count-up animation plays on\nevery page load (NumberFlow only animates on value changes after mount).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(client): simplify global counter to one line with smoother roll",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:48:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "79495cd2cb1d99c04448c12ae4cb1d55c503040d",
          "body": "- Server: GET /api/stats (in-memory cache, zero Redis reads per poll)\n  POST /api/stats/report (receiver peers report bytes after transfer)\n  Upstash Redis INCRBY for durable persistence across redeploys\n  Rate-limited (60/min/IP) + 5 TB per-report cap\n  Gracefully degrades to in-memory when UPSTASH\n[…]\n\n- CLI receiver: reports totalReceived bytes to /api/stats/report after\n  each successful transfer (fire-and-forget, errors silently ignored)\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add global transfer counter with rolling-number animation",
          "author_name": "Jc Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-22T06:19:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc82ad7d3c5b06beea52895d6a8d3456ee5b6e11",
          "body": "Set appearance.strict to false so the theme toggle button renders in\nthe docs navbar (top-right, next to the GitHub link). Default theme\nstays dark. Light/dark logo variants and colors are already defined,\nso light mode renders correctly.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: enable light/dark appearance toggle (#102)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-21T19:03:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "29839e4580dfdd50e81c5f31da836522da205e45",
          "body": "Updates all documentation for the v1.6.0 protocol version negotiation\nfeature and tidies alignment in the code it added.\n\nDocs:\n- changelog: add v1.6.0 entry\n- architecture reference: add pv/pvMin/ver to metadata and ack, document\n  the new incompatible message, and add a Protocol versioning section\n[…]\nt struct\n\nNo test files were deleted: all existing tests remain valid and exercise\nlive code paths, so removing any would only reduce coverage.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: document protocol version negotiation (v1.6.0)",
          "author_name": "JC Paredes",
          "author_login": "jannskiee",
          "committed_at": "2026-06-21T17:52:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 20,
      "commits_last_year": 355,
      "latest_release_at": "2026-07-22T16:12:08Z",
      "latest_release_tag": "v1.8.0",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 3.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/jannskiee/floe",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/jannskiee/floe",
          "is_deprecated": false,
          "latest_version": "v1.8.0",
          "repository_url": "https://github.com/jannskiee/floe",
          "versions_count": 20,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-22T16:09:39Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        },
        {
          "name": "p2p-fileshare",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": false,
          "registry_url": "https://www.npmjs.com/package/p2p-fileshare",
          "is_deprecated": false,
          "latest_version": "1.0.0",
          "repository_url": "https://github.com/fluencelabs/p2p-fileshare",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 82,
          "first_published_at": "2020-06-29T12:10:18.776000Z",
          "latest_published_at": "2020-06-29T12:10:18.955000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2216
        }
      ]
    },
    "popularity": {
      "forks": 9,
      "stars": 196,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-05-21",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-18",
            "count": 4
          }
        ],
        "complete": true,
        "collected": 9,
        "total_forks": 9
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "client/tsconfig.json"
      ],
      "toolchain_manifests": [
        "cli/go.mod"
      ],
      "largest_source_bytes": 54913,
      "source_files_sampled": 114,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 12362
    },
    "dependencies": {
      "manifests": [
        "cli/go.mod",
        "client/package.json",
        "package.json",
        "server/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "node-forge",
            "direct": false,
            "version": "0.9.2",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-2328-f5f3-gj25",
              "GHSA-2r2c-g63r-vccr",
              "GHSA-554w-wpv2-vw27",
              "GHSA-5gfm-wpxj-wjgq",
              "GHSA-5m6q-g25r-mvwx",
              "GHSA-5rrq-pxf6-6jx5",
              "GHSA-65ch-62r8-g69g",
              "GHSA-8fr3-hfg3-gpgp",
              "GHSA-92xj-mqp7-vmcj",
              "GHSA-cfm4-qjh2-4765"
            ],
            "fixed_version": "1.4.0",
            "advisory_count": 15,
            "oldest_advisory_days": 2138
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.8,
            "advisory_ids": [
              "GHSA-fwr7-v2mv-hh25"
            ],
            "fixed_version": "3.2.2",
            "advisory_count": 1,
            "oldest_advisory_days": 1569
          },
          {
            "name": "elliptic",
            "direct": false,
            "version": "6.6.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-848j-6mx2-7j84"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 196
          },
          {
            "name": "libp2p",
            "direct": false,
            "version": "0.27.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-f44q-634c-jvwv"
            ],
            "fixed_version": "0.38.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1324
          },
          {
            "name": "parse-duration",
            "direct": false,
            "version": "0.1.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-hcrg-fc28-fcg5"
            ],
            "fixed_version": "2.1.3",
            "advisory_count": 1,
            "oldest_advisory_days": 526
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "3.4.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 92
          },
          {
            "name": "ip-address",
            "direct": true,
            "version": "6.3.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v2v4-37r5-5v8g"
            ],
            "fixed_version": "10.1.1",
            "advisory_count": 1,
            "oldest_advisory_days": 79
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "2.1.11",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-mwcw-c2x4-8c55"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 1,
            "oldest_advisory_days": 592
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 5,
          "critical": 1,
          "moderate": 2
        },
        "advisory_count": 22,
        "affected_count": 8,
        "assessed_count": 354,
        "malicious_count": 0,
        "assessed_package": "npm:p2p-fileshare@1.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "go",
        "npm"
      ],
      "dependencies": [
        {
          "name": "github.com/google/uuid",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/gorilla/websocket",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.3"
        },
        {
          "name": "github.com/pion/webrtc/v4",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.2.17"
        },
        {
          "name": "github.com/schollz/progressbar/v3",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.19.1"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "cli/go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "@number-flow/react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.2"
        },
        {
          "name": "@radix-ui/react-accordion",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.16"
        },
        {
          "name": "@radix-ui/react-progress",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.12"
        },
        {
          "name": "@radix-ui/react-slot",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "@sentry/nextjs",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.66.0"
        },
        {
          "name": "class-variance-authority",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "fflate",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.8.2"
        },
        {
          "name": "lucide-react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.25.0"
        },
        {
          "name": "next",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "16.2.10"
        },
        {
          "name": "qrcode.react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.0"
        },
        {
          "name": "react",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.7"
        },
        {
          "name": "react-dom",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.7"
        },
        {
          "name": "simple-peer",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.11.1"
        },
        {
          "name": "socket.io-client",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "tailwind-merge",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.0"
        },
        {
          "name": "uuid",
          "manifest": "client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.1"
        },
        {
          "name": "cors",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.6"
        },
        {
          "name": "dotenv",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.4.7"
        },
        {
          "name": "express",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "helmet",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.3.0"
        },
        {
          "name": "socket.io",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.8.3"
        },
        {
          "name": "ws",
          "manifest": "server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.1"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "github.com/google/uuid",
            "direct": true,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gorilla/websocket",
            "direct": true,
            "version": "v1.5.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/webrtc/v4",
            "direct": true,
            "version": "v4.2.15",
            "ecosystem": "go"
          },
          {
            "name": "github.com/schollz/progressbar/v3",
            "direct": true,
            "version": "v3.19.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cobra",
            "direct": true,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "@number-flow/react",
            "direct": true,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-accordion",
            "direct": true,
            "version": "1.2.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-progress",
            "direct": true,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/nextjs",
            "direct": true,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": true,
            "version": "2.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": true,
            "version": "16.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": true,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": true,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": true,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "helmet",
            "direct": true,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "1.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "next",
            "direct": true,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode.react",
            "direct": true,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "simple-peer",
            "direct": true,
            "version": "9.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io",
            "direct": true,
            "version": "4.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-client",
            "direct": true,
            "version": "4.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "github.com/inconshreveable/mousetrap",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mitchellh/colorstring",
            "direct": false,
            "version": "v0.0.0-20190213212951-d06e56a500db",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/datachannel",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/dtls/v3",
            "direct": false,
            "version": "v3.1.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/ice/v4",
            "direct": false,
            "version": "v4.2.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/interceptor",
            "direct": false,
            "version": "v0.1.45",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/logging",
            "direct": false,
            "version": "v0.2.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/mdns/v2",
            "direct": false,
            "version": "v2.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/randutil",
            "direct": false,
            "version": "v0.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/rtcp",
            "direct": false,
            "version": "v1.2.16",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/rtp",
            "direct": false,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/sctp",
            "direct": false,
            "version": "v1.10.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/sdp/v3",
            "direct": false,
            "version": "v3.0.18",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/srtp/v3",
            "direct": false,
            "version": "v3.0.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/stun/v3",
            "direct": false,
            "version": "v3.1.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/transport/v4",
            "direct": false,
            "version": "v4.0.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pion/turn/v5",
            "direct": false,
            "version": "v5.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/rivo/uniseg",
            "direct": false,
            "version": "v0.4.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/pflag",
            "direct": false,
            "version": "v1.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/wlynxg/anet",
            "direct": false,
            "version": "v0.0.5",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/crypto",
            "direct": false,
            "version": "v0.53.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": false,
            "version": "v0.56.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": false,
            "version": "v0.46.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/term",
            "direct": false,
            "version": "v0.44.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/time",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "@alloc/quick-lru",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/code-transformer",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/code-transformer-bundler-plugins",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/tracing-hooks",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/types",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@next/env",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/eslint-plugin-next",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-darwin-arm64",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-darwin-x64",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-arm64-gnu",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-arm64-musl",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-x64-gnu",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-linux-x64-musl",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-win32-arm64-msvc",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@next/swc-win32-x64-msvc",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@nolyfill/is-core-module",
            "direct": false,
            "version": "1.0.39",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api-logs",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/instrumentation",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/resources",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace-base",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.43.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/primitive",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collapsible",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collection",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-direction",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-id",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-presence",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-controllable-state",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-effect-event",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-layout-effect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-commonjs",
            "direct": false,
            "version": "28.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rtsao/scc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/babel-plugin-component-annotate",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/browser",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/browser-utils",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/bundler-plugin-core",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/bundler-plugins",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-darwin",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-arm",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-arm64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-i686",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-linux-x64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-arm64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-i686",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/cli-win32-x64",
            "direct": false,
            "version": "2.58.6",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/conventions",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/core",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/feedback",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node-core",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/opentelemetry",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/react",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/replay",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/replay-canvas",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/server-utils",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/vercel-edge",
            "direct": false,
            "version": "10.66.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/webpack-plugin",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@socket.io/component-emitter",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/node",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-android-arm64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-arm64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-x64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-freebsd-x64",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-gnu",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-musl",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-gnu",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-musl",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-wasm32-wasi",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-arm64-msvc",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-x64-msvc",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/postcss",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/cors",
            "direct": false,
            "version": "2.8.19",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json5",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/simple-peer",
            "direct": false,
            "version": "9.11.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/uuid",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm-eabi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-freebsd-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-openharmony-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-wasm32-wasi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-x64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ast",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/floating-point-hex-parser",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-api-error",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-buffer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-numbers",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-bytecode",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-section",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ieee754",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/leb128",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/utf8",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-edit",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-gen",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-opt",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-parser",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wast-printer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/ieee754",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/long",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-phases",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-buffer-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-includes",
            "direct": false,
            "version": "3.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlast",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlastindex",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flat",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flatmap",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.tosorted",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "arraybuffer.prototype.slice",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-types-flow",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "async-function",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": false,
            "version": "4.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "base64id",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001806",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "check-error",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-trace-event",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "client-only",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "damerau-levenshtein",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-offset",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "deep-eql",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.393",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io",
            "direct": false,
            "version": "6.6.8",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-client",
            "direct": false,
            "version": "6.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "engine.io-parser",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "err-code",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract",
            "direct": false,
            "version": "1.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract-get",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-iterator-helpers",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-shim-unscopables",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-to-primitive",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-next",
            "direct": false,
            "version": "16.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-node",
            "direct": false,
            "version": "0.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-typescript",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-module-utils",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import",
            "direct": false,
            "version": "2.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-jsx-a11y",
            "direct": false,
            "version": "6.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-react",
            "direct": false,
            "version": "7.37.5",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-react-hooks",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esm-env",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "function.prototype.name",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "functions-have-names",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "generator-function",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-browser-rtc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-symbol-description",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regexp",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "16.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-bigints",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "hermes-estree",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "npm"
          },
          {
            "name": "hermes-parser",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-by-default",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-in-the-middle",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internal-slot",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-array-buffer",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-async-function",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-bigint",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-boolean-object",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-bun-module",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-view",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-date-object",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-document.all",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-finalizationregistry",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-function",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-negative-zero",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-object",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-reference",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-regex",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-set",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-shared-array-buffer",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-string",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-symbol",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakmap",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakset",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "iterator.prototype",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsx-ast-utils",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "language-subtag-registry",
            "direct": false,
            "version": "0.3.23",
            "ecosystem": "npm"
          },
          {
            "name": "language-tags",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-runner",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "loose-envify",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "loupe",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "meriyah",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "module-details-from-path",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.16",
            "ecosystem": "npm"
          },
          {
            "name": "napi-postinstall",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-exports-info",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "nodemon",
            "direct": false,
            "version": "3.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "number-flow",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.entries",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "object.fromentries",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "object.groupby",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "object.values",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "own-keys",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pathval",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.19",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "progress",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types",
            "direct": false,
            "version": "15.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pstree.remy",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "16.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "reflect.getprototypeof",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "regexp.prototype.flags",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-in-the-middle",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "2.0.0-next.7",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-array-concat",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-push-apply",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex-test",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "semifies",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-proto",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-update-notifier",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-adapter",
            "direct": false,
            "version": "2.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "socket.io-parser",
            "direct": false,
            "version": "4.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "stable-hash",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stacktrace-parser",
            "direct": false,
            "version": "0.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "stop-iteration-iterator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.includes",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.matchall",
            "direct": false,
            "version": "4.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.repeat",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trim",
            "direct": false,
            "version": "1.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimend",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimstart",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-literal",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "styled-jsx",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "terser-webpack-plugin",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinypool",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyspy",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "touch",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-length",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-offset",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-length",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.64.0",
            "ecosystem": "npm"
          },
          {
            "name": "unbox-primitive",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "undefsafe",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unrs-resolver",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "7.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "vite-node",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.107.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "3.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-boxed-primitive",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-builtin-type",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-collection",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.22",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xmlhttprequest-ssl",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-validation-error",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 791,
        "direct_count": 30,
        "indirect_count": 761
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 185,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 1,
        "closed_unmerged_prs": 10
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "jannskiee",
          "commits": 344,
          "avatar_url": "https://avatars.githubusercontent.com/u/108071426?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 9,
            "reason": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/24 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 7,
            "reason": "dependency not pinned by hash detected -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 6,
            "reason": "SAST tool is not run on all commits -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "12 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "87e88663fedb72cb6fb138b368381d2106f19706",
        "ran_at": "2026-07-24T15:18:34Z",
        "aggregate_score": 6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T10:45:41Z",
      "oldest_open_prs": [
        {
          "number": 170,
          "created_at": "2026-07-18T17:00:08Z",
          "last_comment_at": "2026-07-18T19:20:33Z",
          "last_comment_author": "jannskiee"
        }
      ],
      "last_merged_pr_at": "2026-07-23T13:04:13Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/jannskiee/floe",
    "host": "github.com",
    "name": "floe",
    "owner": "jannskiee"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 67,
      "inputs": {
        "security": 57,
        "vitality": 79,
        "community": 57,
        "governance": 53,
        "engineering": 89
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "commits_last_year": 355,
              "human_commit_share": 0.92,
              "days_since_last_push": 1,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "355 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 355
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 20,
              "latest_release_tag": "v1.8.0",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 3.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "20 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 57,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "forks": 9,
              "stars": 196,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "196 stars",
                "points": 37.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 196
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "9 forks",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 53,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 185,
              "open_issues": 0,
              "closed_issues": 1,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 10
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "185/195 decided PRs merged",
                "points": 36.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 185,
                      "decided": 195
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/24 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "followers": 6,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "jannskiee",
              "public_repos": 5,
              "account_age_days": 1492
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "6 followers of jannskiee",
                "points": 6.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 6,
                      "login": "jannskiee"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~4 yr old",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 4
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/jannskiee/floe"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "20 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 89,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 18,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "file-sharing",
                "file-transfer",
                "nextjs",
                "open-source",
                "peer-to-peer",
                "socket-io",
                "typescript",
                "webrtc",
                "nodesjs",
                "privacy",
                "react",
                "encryption",
                "golang",
                "p2p"
              ],
              "has_wiki": true,
              "homepage": "https://floe.one",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://floe.one",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "14 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 57,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "28 out of 30 merged PRs checked by a CI test -- score normalized to 9",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/24 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 7",
                "points": 3.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 6",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "12 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Matched the npm:p2p-fileshare@1.0.0 runtime dependency closure — what installing the published package pulls in — 354 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:p2p-fileshare@1.0.0",
                  "assessed": 354
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 47,
            "inputs": {
              "source": "osv",
              "advisories": 22,
              "affected_packages": 8,
              "assessed_packages": 354,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1, high 5, moderate 2",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: ip-address 6.3.0 (moderate)",
                "points": 26.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "ip-address 6.3.0 (moderate)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "7 affected: node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3), +4 more",
                "points": 2.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 7,
                      "packages": "node-forge 0.9.2 (critical 9.8), async 3.2.0 (high 7.8), elliptic 6.6.1 (high 7.3)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "7 advisory-carrying package(s) unaddressed past 90 days; oldest published 2138 days ago",
                "points": 17.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 7,
                      "oldest": 2138
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 354,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 91,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 12362
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "92 of 92 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 92
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "client/tsconfig.json"
              ],
              "agent_commit_share": 0.14,
              "toolchain_manifests": [
                "cli/go.mod"
              ],
              "dependency_bot_commit_share": 0.05
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "cli/go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "cli/go.mod"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "client/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "client/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "14 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 14,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "5 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 5,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 7",
                "points": 7,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 54913,
              "source_files_sampled": 114,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/114 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 114,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "npm package 'p2p-fileshare' points at a different repository (https://github.com/fluencelabs/p2p-fileshare); excluded from ecosystem scoring"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T15:18:53.214904Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jannskiee/floe.svg",
  "full_name": "jannskiee/floe",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计Go, npm.