Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 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 р.Переглянути на GitHub ↗

jannskiee/floe має індекс здоров’я 67 зі 100, що відповідає смузі «Помірний». Найвищий показник — AI Readiness (91/100), найнижчий — Sustainability & Governance (53/100). Останнє оновлення було 1 день тому. Більшість нещодавньої роботи виконує один учасник.

67
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

67
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

JC ParedesОсобистий обліковий запис
6 підписників5 публічних репозиторіївз черв. 2022 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
Gogithub.com/jannskiee/floev1.8.0-201 день тому
npmp2p-fileshareвказує на інший репозиторій — не оцінюється1.0.08212216 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

79Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 1 дн. тому
8.3/36Ритм комітів — 12/52 тижнів із комітами
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
Як обчислюється оцінка
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% загального індексу
Як обчислюється оцінка
37.1/60Зірки — 196 зірок
7.5/25Форки — 9 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks9
stars196
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
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Вирішення issue — закрито 100% issue
36.3/38.3Прийняття PR — злито 185/195 вирішених PR
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

Власність та опіка

37У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
6.1/25Охоплення власника — 6 підписників у jannskiee
13.8/25Послужний список — 5 публічних репозиторіїв, вік облікового запису ~4 р.
Використані вхідні дані
followers6
owner_typeUser
is_verified
owner_loginjannskiee
public_repos5
account_age_days1 492
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у go
35/35Свіжість публікацій — остання публікація 1 дн. тому
20/20Історія версій — 20 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgithub.com/jannskiee/floe
ecosystemsgo
any_deprecatedні
min_days_since_publish1

Інженерна якість

Чи наявні базові інженерні практики та документація?

89Відмінний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 2 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — 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
Як обчислюється оцінка
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
Звірено з runtime-замиканням залежностей npm:p2p-fileshare@1.0.0 — тим, що тягне за собою встановлення опублікованого пакета, — 354 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 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/11Конфігурація лінтера / форматера — eslint.config.mjs
11/11Статична перевірка типів — client/tsconfig.json
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 14 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 5 з останніх 100 комітів — автоматичні оновлення залежностей
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Керовані розміри файлів — 0/114 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes54 913
source_files_sampled114
oversized_source_files0

Ключові факти

196зірок GitHub
1контриб'юторів
355комітів за останні 12 місяців
1днів від останнього пушу
20релізів
1бас-фактор
0відкритих issue
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

Докладніше

Історія зірок і форків 0 ★ / 9 ⇿
0Зірки
9Форки
18Релізи

Коли додано кожну зірку й форк — зібрано з 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 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
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.