公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-26 02:53 UTC

glacambre / firenvim

Embed Neovim in Chrome, Firefox & others.

TypeScript · Vim ScriptGPL-3.0★ 6,087 星标⑂ 158 复刻始于 2019年3月在 GitHub 上查看 ↗

glacambre/firenvim 的健康指数为 100 分中的 60 分,处于「中等」区间。 其得分最高的类别是Community & Adoption(79/100),最低的是AI Readiness(44/100)。 最近一次更新在 71 天前。 近期的大部分工作由 1 位贡献者完成。

60
总分 / 100
中等

软件健康指数

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

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

评分画像

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

所有权

Ghjuvan Lacambre个人账户
150 关注者19 个公开仓库始于 2015年3月@AdaCore

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

按类别列示的指标

活力

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

60中等 · 占总体的 22%

开发活跃度

49存在风险
评分方式
18/36推送新近度 — 最近一次推送于 71 天前
5.5/36提交节奏 — 52 周中有 8 周有提交
15.9/18提交量 — 最近一年 58 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year58
human_commit_share1
days_since_last_push71
active_weeks_last_year8

发布纪律

76良好
评分方式
27/27有发布版本 — 已发布 9 个发布版本
36/36发布时效 — 最近一次发布版本于 78 天前
12.6/27发布节奏 — 约每 228.1 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count9
latest_release_tag0.2.17
releases_from_tags
days_since_latest_release78
mean_days_between_releases228.1

社区与采用

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

79良好 · 占总体的 18%
评分方式
60/60星标 — 6,087 个星标
18.3/25复刻 — 158 个复刻
7.6/15关注者 — 24 位关注者
所用输入
forks158
stars6,087
watchers24
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

53中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
1.9/22.5提交分布 — 头号贡献者编写了 92% 的提交
13.5/13.5贡献者广度 — 41 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 24 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled41
top_contributor_share0.916
评分方式
40.2/46.8议题解决 — 86% 的议题已关闭
31/38.3PR 接受 — 已裁定的 PR 中 868/1,070 已合并
0/15OpenSSF Scorecard:Code-Review — Found 1/11 approved changesets -- score normalized to 0
所用输入
merged_prs868
open_issues88
closed_issues537
issue_closed_ratio0.859
closed_unmerged_prs202
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
15.7/25所有者影响力 — glacambre 有 150 位关注者
21.5/25既往记录 — 19 个公开仓库,账户约 11 年
所用输入
followers150
owner_typeUser
is_verified
owner_loginglacambre
public_repos19
account_age_days4,147
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。

工程质量

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

61中等 · 占总体的 20%

工程实践

68中等
评分方式
24/24CI 工作流 — 6 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

50中等
评分方式
30/30README
0/25文档目录
0/15文档 / 主页站点
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

51中等 · 占总体的 16%

安全态势

47存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
2.5/2.5CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/11 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 24 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
1/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
5/5SAST — SAST tool is run on all commits
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.7
已排除计分(无数据或不适用):branch_protection, packaging。 其余权重已重新归一化。
评分方式
11.8/35直接依赖不含已知公告 — 2 个受影响:sharp 0.33.5 (high 7.3), ws 8.20.0 (high 7.5)
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories28
affected_packages13
assessed_packages737
unassessed_packages0
affected_by_severitycritical 1, high 11, low 1
direct_affected_packages2
已排除计分(无数据或不适用):间接依赖不含已知公告。 其余权重已重新归一化。 已将 737 个已解析依赖与 OSV 比对。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

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

44存在风险 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
17.1/40可读的提交历史 — 100 次人类提交中有 32 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.32
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
0/10已体现的代理实践 — 最近 100 次提交中没有代理编写的提交
0/8自动化维护 — 未观察到自动依赖更新
2/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configstsconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
53.4/55可控的文件大小 — 采样的 34 个源文件中有 1 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes71,833
source_files_sampled34
oversized_source_files1

关键数据

6,087GitHub 星标
41贡献者
58最近 12 个月提交数
71距最近推送天数
9发布版本数
1巴士系数(bus factor)
88开放议题
npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'Firenvim' from its registry

更多细节

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

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

0408012016015832019-052022-122026-07
主版本 0次版本 0修订 9

每个点涵盖 7 天。

OpenSSF Scorecard 4.7 / 10
4.7综合

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

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/11 approved changesets -- score normalized to 0
10Contributorsproject has 24 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
2Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 2
10SASTSAST tool is run on all commits
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities24 existing vulnerabilities detected
直接依赖 25
注册表软件包版本约束清单文件
npm@types/msgpack-lite0.1.8package.json
npm@types/node16.10.2package.json
npm@types/selenium-webdriver^4.35.5package.json
npm@types/ws^8.2.0package.json
npmace-builds^1.4.13package.json
npmaddons-linter^10.2.0package.json
npmcodemirror^5.63.1package.json
npmcopy-webpack-plugin^14.0.0package.json
npmimports-loader^3.1.1package.json
npmistanbul-lib-coverage^3.2.0package.json
npmjest^30.3.0package.json
npmmonaco-editor^0.28.1package.json
npmmsgpack-lite0.1.26package.json
npmnyc^15.1.0package.json
npmselenium-webdriver^4.41.0package.json
npmsharp^0.33.1package.json
npmts-jest^29.4.6package.json
npmts-loader^9.2.6package.json
npmtypescript6.0.3package.json
npmweb-ext^10.0.0package.json
npmweb-ext-types3.2.1package.json
npmwebextension-polyfill0.10.0package.json
npmwebpack^5.89.0package.json
npmwebpack-cli4.10.0package.json
npmws^8.20.0package.json
全部依赖 737

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

注册表软件包版本关系
npm@types/msgpack-lite0.1.8直接
npm@types/node16.10.2直接
npm@types/selenium-webdriver4.35.5直接
npm@types/ws8.18.1直接
npmace-builds1.43.6直接
npmaddons-linter10.3.0直接
npmcodemirror5.65.21直接
npmcopy-webpack-plugin14.0.0直接
npmimports-loader3.1.1直接
npmistanbul-lib-coverage3.2.2直接
npmjest30.3.0直接
npmmonaco-editor0.28.1直接
npmmsgpack-lite0.1.26直接
npmnyc15.1.0直接
npmselenium-webdriver4.43.0直接
npmsharp0.33.5直接
npmts-jest29.4.9直接
npmts-loader9.5.7直接
npmtypescript6.0.3直接
npmweb-ext10.1.0直接
npmweb-ext-types3.2.1直接
npmwebextension-polyfill0.10.0直接
npmwebpack5.106.2直接
npmwebpack-cli4.10.0直接
npmws8.20.0直接
npm@babel/code-frame7.29.0间接
npm@babel/compat-data7.29.0间接
npm@babel/core7.29.0间接
npm@babel/generator7.29.1间接
npm@babel/helper-compilation-targets7.28.6间接
npm@babel/helper-globals7.28.0间接
npm@babel/helper-module-imports7.28.6间接
npm@babel/helper-module-transforms7.28.6间接
npm@babel/helper-plugin-utils7.28.6间接
npm@babel/helper-string-parser7.27.1间接
npm@babel/helper-validator-identifier7.28.5间接
npm@babel/helper-validator-option7.27.1间接
npm@babel/helpers7.29.2间接
npm@babel/parser7.29.2间接
npm@babel/plugin-syntax-async-generators7.8.4间接
npm@babel/plugin-syntax-bigint7.8.3间接
npm@babel/plugin-syntax-class-properties7.12.13间接
npm@babel/plugin-syntax-class-static-block7.14.5间接
npm@babel/plugin-syntax-import-attributes7.28.6间接
npm@babel/plugin-syntax-import-meta7.10.4间接
npm@babel/plugin-syntax-json-strings7.8.3间接
npm@babel/plugin-syntax-jsx7.28.6间接
npm@babel/plugin-syntax-logical-assignment-operators7.10.4间接
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3间接
npm@babel/plugin-syntax-numeric-separator7.10.4间接
npm@babel/plugin-syntax-object-rest-spread7.8.3间接
npm@babel/plugin-syntax-optional-catch-binding7.8.3间接
npm@babel/plugin-syntax-optional-chaining7.8.3间接
npm@babel/plugin-syntax-private-property-in-object7.14.5间接
npm@babel/plugin-syntax-top-level-await7.14.5间接
npm@babel/plugin-syntax-typescript7.28.6间接
npm@babel/runtime7.29.2间接
npm@babel/template7.28.6间接
npm@babel/traverse7.29.0间接
npm@babel/types7.29.0间接
npm@bazel/runfiles6.5.0间接
npm@bcoe/v8-coverage0.2.3间接
npm@devicefarmer/adbkit3.3.8间接
npm@devicefarmer/adbkit-logcat2.1.3间接
npm@devicefarmer/adbkit-monkey1.2.1间接
npm@discoveryjs/json-ext0.5.7间接
npm@emnapi/core1.10.0间接
npm@emnapi/runtime1.10.0间接
npm@emnapi/wasi-threads1.2.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@fluent/syntax0.19.0间接
npm@fregante/relaxed-json2.0.0间接
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/sharp-darwin-arm640.33.5间接
npm@img/sharp-darwin-x640.33.5间接
npm@img/sharp-libvips-darwin-arm641.0.4间接
npm@img/sharp-libvips-darwin-x641.0.4间接
npm@img/sharp-libvips-linux-arm1.0.5间接
npm@img/sharp-libvips-linux-arm641.0.4间接
npm@img/sharp-libvips-linux-s390x1.0.4间接
npm@img/sharp-libvips-linux-x641.0.4间接
npm@img/sharp-libvips-linuxmusl-arm641.0.4间接
npm@img/sharp-libvips-linuxmusl-x641.0.4间接
npm@img/sharp-linux-arm0.33.5间接
npm@img/sharp-linux-arm640.33.5间接
npm@img/sharp-linux-s390x0.33.5间接
npm@img/sharp-linux-x640.33.5间接
npm@img/sharp-linuxmusl-arm640.33.5间接
npm@img/sharp-linuxmusl-x640.33.5间接
npm@img/sharp-wasm320.33.5间接
npm@img/sharp-win32-ia320.33.5间接
npm@img/sharp-win32-x640.33.5间接
npm@isaacs/cliui8.0.2间接
npm@istanbuljs/load-nyc-config1.1.0间接
npm@istanbuljs/schema0.1.6间接
npm@jest/console30.3.0间接
npm@jest/core30.3.0间接
npm@jest/diff-sequences30.3.0间接
npm@jest/environment30.3.0间接
npm@jest/expect30.3.0间接
npm@jest/expect-utils30.3.0间接
npm@jest/fake-timers30.3.0间接
npm@jest/get-type30.1.0间接
npm@jest/globals30.3.0间接
npm@jest/pattern30.0.1间接
npm@jest/reporters30.3.0间接
npm@jest/schemas30.0.5间接
npm@jest/snapshot-utils30.3.0间接
npm@jest/source-map30.0.1间接
npm@jest/test-result30.3.0间接
npm@jest/test-sequencer30.3.0间接
npm@jest/transform30.3.0间接
npm@jest/types30.3.0间接
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@mdn/browser-compat-data7.3.9间接
npm@napi-rs/wasm-runtime0.2.12间接
npm@pinojs/redact0.4.0间接
npm@pkgjs/parseargs0.11.0间接
npm@pkgr/core0.2.9间接
npm@pnpm/config.env-replace1.1.0间接
npm@pnpm/network.ca-file1.0.2间接
npm@pnpm/npm-conf3.0.2间接
npm@sinclair/typebox0.34.49间接
npm@sinonjs/commons3.0.1间接
npm@sinonjs/fake-timers15.3.2间接
npm@tybys/wasm-util0.10.1间接
npm@types/babel__core7.20.5间接
npm@types/babel__generator7.27.0间接
npm@types/babel__template7.4.4间接
npm@types/babel__traverse7.28.0间接
npm@types/eslint9.6.1间接
npm@types/eslint-scope3.7.7间接
npm@types/estree1.0.8间接
npm@types/firefox-webext-browser120.0.5间接
npm@types/istanbul-lib-coverage2.0.6间接
npm@types/istanbul-lib-report3.0.3间接
npm@types/istanbul-reports3.0.4间接
npm@types/jest30.0.0间接
npm@types/json-schema7.0.15间接
npm@types/minimatch3.0.5间接
npm@types/stack-utils2.0.3间接
npm@types/yargs17.0.35间接
npm@types/yargs-parser21.0.3间接
npm@ungap/structured-clone1.3.0间接
npm@unrs/resolver-binding-android-arm-eabi1.11.1间接
npm@unrs/resolver-binding-android-arm641.11.1间接
npm@unrs/resolver-binding-darwin-arm641.11.1间接
npm@unrs/resolver-binding-darwin-x641.11.1间接
npm@unrs/resolver-binding-freebsd-x641.11.1间接
npm@unrs/resolver-binding-linux-arm-gnueabihf1.11.1间接
npm@unrs/resolver-binding-linux-arm-musleabihf1.11.1间接
npm@unrs/resolver-binding-linux-arm64-gnu1.11.1间接
npm@unrs/resolver-binding-linux-arm64-musl1.11.1间接
npm@unrs/resolver-binding-linux-ppc64-gnu1.11.1间接
npm@unrs/resolver-binding-linux-riscv64-gnu1.11.1间接
npm@unrs/resolver-binding-linux-riscv64-musl1.11.1间接
npm@unrs/resolver-binding-linux-s390x-gnu1.11.1间接
npm@unrs/resolver-binding-linux-x64-gnu1.11.1间接
npm@unrs/resolver-binding-linux-x64-musl1.11.1间接
npm@unrs/resolver-binding-wasm32-wasi1.11.1间接
npm@unrs/resolver-binding-win32-arm64-msvc1.11.1间接
npm@unrs/resolver-binding-win32-ia32-msvc1.11.1间接
npm@unrs/resolver-binding-win32-x64-msvc1.11.1间接
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@webpack-cli/configtest1.2.0间接
npm@webpack-cli/info1.5.0间接
npm@webpack-cli/serve1.7.0间接
npm@xtuc/ieee7541.2.0间接
npm@xtuc/long4.2.2间接
npmacorn8.16.0间接
npmacorn-import-phases1.0.4间接
npmacorn-jsx5.3.2间接
npmaddons-moz-compare1.3.0间接
npmaddons-scanner-utils15.0.0间接
npmadm-zip0.5.17间接
npmagent-base7.1.4间接
npmaggregate-error3.1.0间接
npmajv6.15.0间接
npmajv8.18.0间接
npmajv-formats2.1.1间接
npmajv-keywords5.1.0间接
npmansi-align3.0.1间接
npmansi-escapes4.3.2间接
npmansi-regex5.0.1间接
npmansi-regex6.2.2间接
npmansi-styles4.3.0间接
npmansi-styles5.2.0间接
npmansi-styles6.2.3间接
npmanymatch3.1.3间接
npmappend-transform2.0.0间接
npmarchy1.0.0间接
npmargparse1.0.10间接
npmargparse2.0.1间接
npmarray-differ4.0.0间接
npmarray-union3.0.1间接
npmasync3.2.6间接
npmatomic-sleep1.0.0间接
npmatomically2.1.1间接
npmbabel-jest30.3.0间接
npmbabel-plugin-istanbul7.0.1间接
npmbabel-plugin-jest-hoist30.3.0间接
npmbabel-preset-current-node-syntax1.2.0间接
npmbabel-preset-jest30.3.0间接
npmbalanced-match1.0.2间接
npmbaseline-browser-mapping2.10.22间接
npmbluebird3.7.2间接
npmboolbase1.0.0间接
npmboxen8.0.1间接
npmbrace-expansion1.1.14间接
npmbrace-expansion2.1.0间接
npmbraces3.0.3间接
npmbrowserslist4.28.2间接
npmbs-logger0.2.6间接
npmbser2.1.1间接
npmbuffer-crc320.2.13间接
npmbuffer-equal-constant-time1.0.1间接
npmbuffer-from1.1.2间接
npmbundle-name4.1.0间接
npmcaching-transform4.0.0间接
npmcallsites3.1.0间接
npmcamelcase5.3.1间接
npmcamelcase6.3.0间接
npmcamelcase8.0.0间接
npmcaniuse-lite1.0.30001791间接
npmchalk4.1.2间接
npmchalk5.6.2间接
npmchar-regex1.0.2间接
npmcheerio1.2.0间接
npmcheerio-select2.1.0间接
npmchrome-launcher1.2.0间接
npmchrome-trace-event1.0.4间接
npmci-info4.4.0间接
npmcjs-module-lexer2.2.0间接
npmclean-stack2.2.0间接
npmcli-boxes3.0.0间接
npmcliui6.0.0间接
npmcliui8.0.1间接
npmclone1.0.4间接
npmclone-deep4.0.1间接
npmco4.6.0间接
npmcollect-v8-coverage1.0.3间接
npmcolor4.2.3间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.4间接
npmcolor-string1.9.1间接
npmcolorette2.0.20间接
npmcolumnify1.6.0间接
npmcommander2.20.3间接
npmcommander2.9.0间接
npmcommander7.2.0间接
npmcommander9.5.0间接
npmcommon-tags1.8.2间接
npmcommondir1.0.1间接
npmconcat-map0.0.1间接
npmconcat-stream1.6.2间接
npmconfig-chain1.1.13间接
npmconfigstore7.1.0间接
npmconvert-source-map1.9.0间接
npmconvert-source-map2.0.0间接
npmcore-util-is1.0.3间接
npmcross-spawn7.0.6间接
npmcss-select5.2.2间接
npmcss-what6.2.2间接
npmdebounce1.2.1间接
npmdebug4.3.7间接
npmdebug4.4.3间接
npmdecamelize1.2.0间接
npmdecamelize6.0.1间接
npmdedent1.7.2间接
npmdeep-extend0.6.0间接
npmdeep-is0.1.4间接
npmdeepmerge4.3.1间接
npmdefault-browser5.5.0间接
npmdefault-browser-id5.0.1间接
npmdefault-require-extensions3.0.1间接
npmdefaults1.0.4间接
npmdefine-lazy-prop3.0.0间接
npmdetect-libc2.1.2间接
npmdetect-newline3.1.0间接
npmdom-serializer2.0.0间接
npmdomelementtype2.3.0间接
npmdomhandler5.0.3间接
npmdomutils3.2.2间接
npmdot-prop9.0.0间接
npmeastasianwidth0.2.0间接
npmecdsa-sig-formatter1.0.11间接
npmelectron-to-chromium1.5.344间接
npmemittery0.13.1间接
npmemoji-regex10.6.0间接
npmemoji-regex8.0.0间接
npmemoji-regex9.2.2间接
npmencoding-sniffer0.2.1间接
npmenhanced-resolve5.21.0间接
npmentities4.5.0间接
npmentities6.0.1间接
npmentities7.0.1间接
npmenvinfo7.21.0间接
npmerror-ex1.3.4间接
npmes-errors1.3.0间接
npmes-module-lexer2.1.0间接
npmes6-error4.1.1间接
npmescalade3.2.0间接
npmescape-goat4.0.0间接
npmescape-string-regexp2.0.0间接
npmescape-string-regexp4.0.0间接
npmeslint9.39.4间接
npmeslint-plugin-no-unsanitized4.1.5间接
npmeslint-scope5.1.1间接
npmeslint-scope8.4.0间接
npmeslint-visitor-keys3.4.3间接
npmeslint-visitor-keys4.2.1间接
npmeslint-visitor-keys5.0.1间接
npmespree10.4.0间接
npmespree11.2.0间接
npmesprima4.0.1间接
npmesquery1.7.0间接
npmesrecurse4.3.0间接
npmestraverse4.3.0间接
npmestraverse5.3.0间接
npmesutils2.0.3间接
npmevent-lite0.1.3间接
npmevents3.3.0间接
npmexeca5.1.1间接
npmexit-x0.2.2间接
npmexpect30.3.0间接
npmfast-deep-equal3.1.3间接
npmfast-json-patch3.1.1间接
npmfast-json-stable-stringify2.1.0间接
npmfast-levenshtein2.0.6间接
npmfast-uri3.1.0间接
npmfastest-levenshtein1.0.16间接
npmfb-watchman2.0.2间接
npmfdir6.5.0间接
npmfile-entry-cache8.0.0间接
npmfill-range7.1.1间接
npmfind-cache-dir3.3.2间接
npmfind-up4.1.0间接
npmfind-up5.0.0间接
npmfirefox-profile4.7.0间接
npmfirst-chunk-stream3.0.0间接
npmflat5.0.2间接
npmflat-cache4.0.1间接
npmflatted3.4.2间接
npmforeground-child2.0.0间接
npmforeground-child3.3.1间接
npmfromentries1.3.2间接
npmfs-extra11.3.4间接
npmfs.realpath1.0.0间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmfx-runner1.4.0间接
npmgensync1.0.0-beta.2间接
npmget-caller-file2.0.5间接
npmget-east-asian-width1.5.0间接
npmget-package-type0.1.0间接
npmget-stream6.0.1间接
npmglob10.5.0间接
npmglob7.2.3间接
npmglob-parent6.0.2间接
npmglob-to-regexp0.4.1间接
npmglobal-directory4.0.1间接
npmglobals14.0.0间接
npmgraceful-fs4.2.10间接
npmgraceful-fs4.2.11间接
npmgraceful-readlink1.0.1间接
npmgrowly1.3.0间接
npmhandlebars4.7.9间接
npmhas-flag4.0.0间接
npmhasha5.2.2间接
npmhasown2.0.3间接
npmhtml-escaper2.0.2间接
npmhtmlparser210.1.0间接
npmhttps-proxy-agent7.0.6间接
npmhuman-signals2.1.0间接
npmiconv-lite0.6.3间接
npmieee7541.2.1间接
npmignore5.3.2间接
npmimage-size2.0.2间接
npmimmediate3.0.6间接
npmimport-fresh3.3.1间接
npmimport-local3.2.0间接
npmimurmurhash0.1.4间接
npmindent-string4.0.0间接
npmindex-to-position1.2.0间接
npminflight1.0.6间接
npminherits2.0.4间接
npmini1.3.8间接
npmini4.1.1间接
npmini4.1.3间接
npmint64-buffer0.1.10间接
npminterpret2.2.0间接
npmis-absolute0.1.7间接
npmis-arrayish0.2.1间接
npmis-arrayish0.3.4间接
npmis-core-module2.16.1间接
npmis-docker2.2.1间接
npmis-docker3.0.0间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-generator-fn2.1.0间接
npmis-glob4.0.3间接
npmis-in-ci1.0.0间接
npmis-in-ssh1.0.0间接
npmis-inside-container1.0.0间接
npmis-installed-globally1.0.0间接
npmis-npm6.1.0间接
npmis-number7.0.0间接
npmis-path-inside4.0.0间接
npmis-plain-object2.0.4间接
npmis-relative0.1.3间接
npmis-stream2.0.1间接
npmis-typedarray1.0.0间接
npmis-utf80.2.1间接
npmis-windows1.0.2间接
npmis-wsl2.2.0间接
npmis-wsl3.1.1间接
npmisarray1.0.0间接
npmisexe1.1.2间接
npmisexe2.0.0间接
npmisobject3.0.1间接
npmistanbul-lib-hook3.0.0间接
npmistanbul-lib-instrument4.0.3间接
npmistanbul-lib-instrument6.0.3间接
npmistanbul-lib-processinfo2.0.3间接
npmistanbul-lib-report3.0.1间接
npmistanbul-lib-source-maps4.0.1间接
npmistanbul-lib-source-maps5.0.6间接
npmistanbul-reports3.2.0间接
npmjackspeak3.4.3间接
npmjest-changed-files30.3.0间接
npmjest-circus30.3.0间接
npmjest-cli30.3.0间接
npmjest-config30.3.0间接
npmjest-diff30.3.0间接
npmjest-docblock30.2.0间接
npmjest-each30.3.0间接
npmjest-environment-node30.3.0间接
npmjest-haste-map30.3.0间接
npmjest-leak-detector30.3.0间接
npmjest-matcher-utils30.3.0间接
npmjest-message-util30.3.0间接
npmjest-mock30.3.0间接
npmjest-pnp-resolver1.2.3间接
npmjest-regex-util30.0.1间接
npmjest-resolve30.3.0间接
npmjest-resolve-dependencies30.3.0间接
npmjest-runner30.3.0间接
npmjest-runtime30.3.0间接
npmjest-snapshot30.3.0间接
npmjest-util30.3.0间接
npmjest-validate30.3.0间接
npmjest-watcher30.3.0间接
npmjest-worker27.5.1间接
npmjest-worker30.3.0间接
npmjose5.9.6间接
npmjs-tokens4.0.0间接
npmjs-yaml3.14.2间接
npmjs-yaml4.1.1间接
npmjsesc3.1.0间接
npmjson-buffer3.0.1间接
npmjson-merge-patch1.0.2间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson-stable-stringify-without-jsonify1.0.1间接
npmjson52.2.3间接
npmjsonfile6.2.1间接
npmjsonwebtoken9.0.3间接
npmjszip3.10.1间接
npmjwa2.0.1间接
npmjws4.0.1间接
npmkeyv4.5.4间接
npmkind-of6.0.3间接
npmky1.14.3间接
npmlatest-version9.0.0间接
npmleven3.1.0间接
npmlevn0.4.1间接
npmlie3.3.0间接
npmlighthouse-logger2.0.2间接
npmlines-and-columns1.2.4间接
npmloader-runner4.3.2间接
npmlocate-path5.0.0间接
npmlocate-path6.0.0间接
npmlodash.flattendeep4.4.0间接
npmlodash.includes4.3.0间接
npmlodash.isboolean3.0.3间接
npmlodash.isinteger4.0.4间接
npmlodash.isnumber3.0.3间接
npmlodash.isplainobject4.0.6间接
npmlodash.isstring4.0.1间接
npmlodash.memoize4.1.2间接
npmlodash.merge4.6.2间接
npmlodash.once4.1.1间接
npmlru-cache10.4.3间接
npmlru-cache5.1.1间接
npmmake-dir3.1.0间接
npmmake-dir4.0.0间接
npmmake-error1.3.6间接
npmmakeerror1.0.12间接
npmmarky1.3.0间接
npmmerge-stream2.0.0间接
npmmicromatch4.0.8间接
npmmime-db1.54.0间接
npmmimic-fn2.1.0间接
npmminimatch3.1.5间接
npmminimatch9.0.9间接
npmminimist1.2.8间接
npmminipass7.1.3间接
npmms2.1.3间接
npmmultimatch6.0.0间接
npmnapi-postinstall0.3.4间接
npmnatural-compare1.4.0间接
npmneo-async2.6.2间接
npmnode-forge1.4.0间接
npmnode-int640.4.0间接
npmnode-notifier10.0.1间接
npmnode-preload0.2.1间接
npmnode-releases2.0.38间接
npmnormalize-path3.0.0间接
npmnpm-run-path4.0.1间接
npmnth-check2.1.1间接
npmon-exit-leak-free2.1.2间接
npmonce1.4.0间接
npmonetime5.1.2间接
npmopen11.0.0间接
npmoptionator0.9.4间接
npmos-shim0.1.3间接
npmp-limit2.3.0间接
npmp-limit3.1.0间接
npmp-locate4.1.0间接
npmp-locate5.0.0间接
npmp-map3.0.0间接
npmp-try2.2.0间接
npmpackage-hash4.0.0间接
npmpackage-json10.0.1间接
npmpackage-json-from-dist1.0.1间接
npmpako1.0.11间接
npmparent-module1.0.1间接
npmparse-json5.2.0间接
npmparse-json8.3.0间接
npmparse57.3.0间接
npmparse5-htmlparser2-tree-adapter7.1.0间接
npmparse5-parser-stream7.1.2间接
npmpath-exists4.0.0间接
npmpath-is-absolute1.0.1间接
npmpath-key3.1.1间接
npmpath-parse1.0.7间接
npmpath-scurry1.11.1间接
npmpend1.2.0间接
npmpicocolors1.1.1间接
npmpicomatch2.3.2间接
npmpicomatch4.0.4间接
npmpino10.3.1间接
npmpino-abstract-transport3.0.0间接
npmpino-std-serializers7.1.0间接
npmpirates4.0.7间接
npmpkg-dir4.2.0间接
npmpowershell-utils0.1.0间接
npmprelude-ls1.2.1间接
npmpretty-format30.3.0间接
npmprocess-nextick-args2.0.1间接
npmprocess-on-spawn1.1.0间接
npmprocess-warning5.0.0间接
npmpromise-toolbox0.21.0间接
npmproto-list1.2.4间接
npmpunycode2.3.1间接
npmpupa3.3.0间接
npmpure-rand7.0.1间接
npmquick-format-unescaped4.0.4间接
npmrc1.2.8间接
npmreact-is18.3.1间接
npmreadable-stream2.3.8间接
npmreal-require0.2.0间接
npmrechoir0.7.1间接
npmregistry-auth-token5.1.1间接
npmregistry-url6.0.1间接
npmrelease-zalgo1.0.0间接
npmrequire-directory2.1.1间接
npmrequire-from-string2.0.2间接
npmrequire-main-filename2.0.0间接
npmresolve1.22.12间接
npmresolve-cwd3.0.0间接
npmresolve-from4.0.0间接
npmresolve-from5.0.0间接
npmrimraf3.0.2间接
npmrun-applescript7.1.0间接
npmsafe-buffer5.1.2间接
npmsafe-buffer5.2.1间接
npmsafe-stable-stringify2.5.0间接
npmsafer-buffer2.1.2间接
npmsax1.6.0间接
npmschema-utils4.3.3间接
npmsemver6.3.1间接
npmsemver7.7.4间接
npmserialize-javascript7.0.5间接
npmset-blocking2.0.0间接
npmsetimmediate1.0.5间接
npmshallow-clone3.0.1间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmshell-quote1.7.3间接
npmshellwords0.1.1间接
npmsignal-exit3.0.7间接
npmsignal-exit4.1.0间接
npmsimple-swizzle0.2.4间接
npmslash3.0.0间接
npmsonic-boom4.2.1间接
npmsource-map0.6.1间接
npmsource-map0.7.6间接
npmsource-map-support0.5.13间接
npmsource-map-support0.5.21间接
npmspawn-sync1.0.15间接
npmspawn-wrap2.0.0间接
npmsplit1.0.1间接
npmsplit24.2.0间接
npmsprintf-js1.0.3间接
npmstack-utils2.0.6间接
npmstring-length4.0.2间接
npmstring-width4.2.3间接
npmstring-width5.1.2间接
npmstring-width7.2.0间接
npmstring_decoder1.1.1间接
npmstrip-ansi6.0.1间接
npmstrip-ansi7.2.0间接
npmstrip-bom4.0.0间接
npmstrip-bom5.0.0间接
npmstrip-bom-buf2.0.0间接
npmstrip-bom-stream4.0.0间接
npmstrip-comments2.0.1间接
npmstrip-final-newline2.0.0间接
npmstrip-json-comments2.0.1间接
npmstrip-json-comments3.1.1间接
npmstrip-json-comments5.0.3间接
npmstubborn-fs2.0.0间接
npmstubborn-utils1.0.2间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmsynckit0.11.12间接
npmtapable2.3.3间接
npmterser5.46.2间接
npmterser-webpack-plugin5.5.0间接
npmtest-exclude6.0.0间接
npmthread-stream4.0.0间接
npmthrough2.3.8间接
npmtinyglobby0.2.16间接
npmtmp0.2.5间接
npmtmpl1.0.5间接
npmto-regex-range5.0.1间接
npmtslib2.8.1间接
npmtype-check0.4.0间接
npmtype-detect4.0.8间接
npmtype-fest0.21.3间接
npmtype-fest0.8.1间接
npmtype-fest4.41.0间接
npmtypedarray0.0.6间接
npmtypedarray-to-buffer3.1.5间接
npmuglify-js3.19.3间接
npmundici7.25.0间接
npmuniversalify2.0.1间接
npmunrs-resolver1.11.1间接
npmupath2.0.1间接
npmupdate-browserslist-db1.2.3间接
npmupdate-notifier7.3.1间接
npmuri-js4.4.1间接
npmutil-deprecate1.0.2间接
npmuuid8.3.2间接
npmv8-to-istanbul9.3.0间接
npmwalker1.0.8间接
npmwatchpack2.5.1间接
npmwcwidth1.0.1间接
npmwebpack-merge5.10.0间接
npmwebpack-sources3.4.0间接
npmwhatwg-encoding3.1.1间接
npmwhatwg-mimetype4.0.0间接
npmwhen3.7.7间接
npmwhen-exit2.1.5间接
npmwhich1.2.4间接
npmwhich2.0.2间接
npmwhich-module2.0.1间接
npmwidest-line5.0.0间接
npmwildcard2.0.1间接
npmwinreg0.0.12间接
npmword-wrap1.2.5间接
npmwordwrap1.0.0间接
npmwrap-ansi6.2.0间接
npmwrap-ansi7.0.0间接
npmwrap-ansi8.1.0间接
npmwrap-ansi9.0.2间接
npmwrappy1.0.2间接
npmwrite-file-atomic3.0.3间接
npmwrite-file-atomic5.0.1间接
npmwsl-utils0.3.1间接
npmxdg-basedir5.1.0间接
npmxml2js0.6.2间接
npmxmlbuilder11.0.1间接
npmy18n4.0.3间接
npmy18n5.0.8间接
npmyallist3.1.1间接
npmyargs15.4.1间接
npmyargs17.7.2间接
npmyargs-parser18.1.3间接
npmyargs-parser21.1.1间接
npmyauzl3.2.1间接
npmyocto-queue0.1.0间接
npmzip-dir2.0.0间接
依赖安全公告 13

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 737 个包,其中也包含从不交付的开发与测试版本固定:13 个存在已知公告,2 个为直接依赖。

软件包版本关系严重程度公告数修复版本
shell-quote1.7.3间接严重21.9.0
sharp0.33.5直接10.35.0
ws8.20.0直接28.21.0
adm-zip0.5.17间接10.6.0
brace-expansion1.1.14间接25.0.8
brace-expansion2.1.0间接25.0.8
fast-uri3.1.0间接44.1.1
js-yaml3.14.2间接24.3.0
js-yaml4.1.1间接24.3.0
tmp0.2.5间接10.2.6
undici7.25.0间接78.5.0
uuid8.3.2间接113.0.1
@babel/core7.29.0间接18.0.0-rc.6

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 4951,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Lua": 20244,
        "HTML": 12018,
        "Shell": 4148,
        "Dockerfile": 282,
        "JavaScript": 8724,
        "TypeScript": 282650,
        "Vim Script": 56766
      },
      "pushed_at": "2026-05-15T17:16:13Z",
      "created_at": "2019-03-08T11:50:50Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T22:22:23Z",
      "description": "Embed Neovim in Chrome, Firefox & others.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "GPL-3.0",
      "default_branch": "master",
      "license_spdx_raw": "GPL-3.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Vim Script"
      ]
    },
    "owner": {
      "blog": "https://lacamb.re",
      "name": "Ghjuvan Lacambre",
      "type": "User",
      "login": "glacambre",
      "company": "@AdaCore",
      "location": "Paris, France",
      "followers": 150,
      "avatar_url": "https://avatars.githubusercontent.com/u/11534587?v=4",
      "created_at": "2015-03-18T08:04:43Z",
      "is_verified": null,
      "public_repos": 19,
      "account_age_days": 4147
    },
    "license": {
      "state": "standard",
      "spdx_id": "GPL-3.0",
      "raw_spdx": "GPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "0.2.17",
          "kind": "patch",
          "published_at": "2026-05-08T08:09:36Z"
        },
        {
          "tag": "0.2.16",
          "kind": "patch",
          "published_at": "2024-04-28T14:47:23Z"
        },
        {
          "tag": "0.2.15",
          "kind": "patch",
          "published_at": "2023-08-12T15:42:30Z"
        },
        {
          "tag": "0.2.14",
          "kind": "patch",
          "published_at": "2022-11-05T08:59:48Z"
        },
        {
          "tag": "0.2.13",
          "kind": "patch",
          "published_at": "2022-07-15T07:10:32Z"
        },
        {
          "tag": "0.2.12",
          "kind": "patch",
          "published_at": "2022-01-09T07:47:26Z"
        },
        {
          "tag": "0.2.11",
          "kind": "patch",
          "published_at": "2021-11-20T14:34:25Z"
        },
        {
          "tag": "v0.2.10",
          "kind": "patch",
          "published_at": "2021-09-20T04:45:09Z"
        },
        {
          "tag": "v0.2.6",
          "kind": "patch",
          "published_at": "2021-05-09T12:36:41Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "af775c4a1cef5a1e833ae5c6d81afe229ceb639e",
          "body": null,
          "is_bot": false,
          "headline": "feat: support helium",
          "author_name": "sharpchen",
          "author_login": "sharpchen",
          "committed_at": "2026-05-15T17:16:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab0e51bfa4e01191d0bfd1eee15388ac816e702e",
          "body": "Closes #1698",
          "is_bot": false,
          "headline": "SECURITY.ml: capitalize \"id\"",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T09:02:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e0c05a189289ef2a88ec4005b412f14db7a3507",
          "body": "Closes #1402.",
          "is_bot": false,
          "headline": "Mention whitelist/blacklist in README",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T08:46:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f2ee2c20dbd90f1886276b79c71c127039cf229",
          "body": "- Better support for cursor positionning with the Ace editor (8abbeb7)\n- Removal of the template autofill mechanism for Github (34570b8, broken for a while)\n- Console now logs less error messages (7963b02)\n- Use of software rendering on Chrome should improve perf (912f4ee, #1047)\n- Support for manif\n[…]\n68897)\n- Fix issue where background colors aren't always properly set up (870c4ab, #1637)\n- Be more robust against $PATH issues (e412ab2, 9763162, #1614)\n- Fix issues around textarea updates (cf4ff99)",
          "is_bot": false,
          "headline": "package.json: bump version 0.2.16 -> 0.2.17",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T07:56:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8abbeb7d410ceac21d2cbee5f4d30a06430f4d22",
          "body": null,
          "is_bot": false,
          "headline": "Add more fallbacks to AceEditor.getCursor",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T07:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44bb065447e9ddb15b3d58bc6aa5dc49656148a9",
          "body": null,
          "is_bot": false,
          "headline": "AbstractEditor.ts: homogenize syntax",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T07:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcb248ffd6389a78d359429c7051bc4ad4214025",
          "body": null,
          "is_bot": false,
          "headline": "Simplify getOs comment",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T07:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34570b8120ccb804f1169de0a56db376ca404bae",
          "body": null,
          "is_bot": false,
          "headline": "Remove github issue autofill feature",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-08T06:49:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55b2faa7cc514fc02556470c2391f5418ef0cd34",
          "body": null,
          "is_bot": false,
          "headline": "testing: stop attempting to toggle extension in incognito mode in chrome",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87211f3142f56c6792cd52ff1af96ef42742ce7c",
          "body": null,
          "is_bot": false,
          "headline": "Change browser shortcuts test to stop spawning private windows",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7963b0289a65c28d12ddc9560c8e53db411f07fc",
          "body": null,
          "is_bot": false,
          "headline": "Properly ignore messages that are not adressed to page",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "912f4eeb0907392cb5658f05ab1e648a36bb6345",
          "body": null,
          "is_bot": false,
          "headline": "renderer.ts: set willReadFrequently flag as recommended by Chrome",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f51b220cff8708a0634f0f6fdcb166cf3de9629",
          "body": "Object.hasOwn requires upgrading the target to ES2022.",
          "is_bot": false,
          "headline": "background.ts: robustify RPC mechanism",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa7572022a10422da3e1f9bd2853dd7d190c7c7b",
          "body": null,
          "is_bot": false,
          "headline": "configuration.ts: setup local storage listener instead of global one",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "684a64e90232920ebb333f6fd9b59fc714fbccde",
          "body": null,
          "is_bot": false,
          "headline": "tests/chrome.ts: restore browser shortcuts test",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e195a9d04c50275063e3533ad2aee89aa06c76c",
          "body": null,
          "is_bot": false,
          "headline": "background.ts: properly return result of onMessageExternal dispatches",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8360979e3b12dcd09679825479c6b0ad675ef88",
          "body": null,
          "is_bot": false,
          "headline": "CodeMirror6Editor.ts: fix setCursor",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1c5f9a81bcca3053312788984cf633e8bef6cb2",
          "body": null,
          "is_bot": false,
          "headline": "test.yml: upgrade upload-artifact action",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edca57600f8199a7f0981586ea05b60c33e131f0",
          "body": null,
          "is_bot": false,
          "headline": "codeql.yml: update 'checkout' action",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "327d718868de84fc4b91635bfb399c44460b1973",
          "body": null,
          "is_bot": false,
          "headline": ".gitignore: add chromedriver.log",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-07T17:30:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3dd6a4f3bead9bc4374d99da49003e1284510489",
          "body": null,
          "is_bot": false,
          "headline": "Restore fancy js editor support in Chrome",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-06T15:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1205dbccd99ef636e1ebeed98a996fdf91ca96d5",
          "body": null,
          "is_bot": false,
          "headline": "Vendor editor-adapter",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-06T15:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f84ab3f707a237d915f6a2e2d597708e66e3e66f",
          "body": null,
          "is_bot": false,
          "headline": "test.yml: upgrade action-setup-vim from 1.4.1 to 1.6.1",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:58:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06a3eab5723dce7512edc647717492aa706a2c77",
          "body": "There may be an issue where confReady may not fire due to launching\nFirenvim in an empty browser profile. This change should work around\nthat.",
          "is_bot": false,
          "headline": "configuration.ts: make confReady handle testsuite edge-case",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd2f5703cbb4a7c28e9c0f6b9145e0a412792ad5",
          "body": "Somehow the installed chrome versions aren't working.",
          "is_bot": false,
          "headline": "CI: install chrome/chromedriver from Google's websites",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c147121ea422d32f67130edc1fb78034d0d6be8",
          "body": "Chrome tests currently fail in CI. Let's see if doing the same stuff we\ndo for firefox helps.",
          "is_bot": false,
          "headline": "tests/chrome.ts: replicate firefox browser/driver selection logic",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fb10d79045563e106298ca9f8e23d2083b96958",
          "body": null,
          "is_bot": false,
          "headline": "Chrome testsuite: disable coverage & tests requiring arbitrary js eval",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce2a71c8ef2689ba13bd2f041ce3c2a739c805b2",
          "body": null,
          "is_bot": false,
          "headline": "Generate manifest v3 for chrome",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7a645af0fa40e46d242b49f7ca020573ddc10a8",
          "body": "This enables surviving session worker shutdown/restarts.",
          "is_bot": false,
          "headline": "background.ts: store all state in session storage",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-02T14:24:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c6544b2286c8d18fe75832dd32d3b410a2b5e16",
          "body": null,
          "is_bot": false,
          "headline": "Disable \"brokenVimrc\" test for now",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T06:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31aba587404ad801accc2e882199eca9cde0aded",
          "body": null,
          "is_bot": false,
          "headline": "CI: record screen differently on windows",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T06:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09ea3f1db0d28796664e40a5795aaa08e0c1aee6",
          "body": "This should work better with mv3",
          "is_bot": false,
          "headline": "Stop preloading instances entirely",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T06:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fecf44bfe17d8f9f968dbd283d7b03f00c1b8ed9",
          "body": null,
          "is_bot": false,
          "headline": "Survive mv3 background suspension destroying preloaded nvim instance",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T06:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "524503f619cb18f4340f4b95329d7e5781a24581",
          "body": null,
          "is_bot": false,
          "headline": "background.ts: replace inmemory tab storage with browser.storage.session",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T06:23:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcd8b69e077101a322f2200a4ea80708f4b67a48",
          "body": null,
          "is_bot": false,
          "headline": "Remove FUNDING.yml",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-05-01T05:33:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "899206da6ec88e476d3f96df5e5ef48e37dc87d2",
          "body": "Things should remain functionnally unchanged.",
          "is_bot": false,
          "headline": "background: stop attaching RPC handlers to window",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-28T08:03:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5d1dd5e1bf015a6091cdac9b8c38647a87a8b7c",
          "body": "This helps with making sure that the button does change depending on\nFirenvim's status.",
          "is_bot": false,
          "headline": "tests/firefox.ts: ensure browserAction appears in firefox interface",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-28T08:03:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f52a059b2f8dc2e399b99d0a00c1b0e76d39a98",
          "body": "For some reason I thought browser wasn't available in the browserAction\ncontext.",
          "is_bot": false,
          "headline": "browserAction.ts: simplify call to browser.tabs.query",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-28T08:03:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27e97780904288853770fc1db4b4c6072325fa3e",
          "body": null,
          "is_bot": false,
          "headline": "utils.ts: do not rely on window.location.protocol for browser detection",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-28T08:03:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "738f084c254e0be71c35c9dfa1c0a05a4cfc8271",
          "body": "Because again, manifest v3 doesn't support these.",
          "is_bot": false,
          "headline": "Disable context menu through event listener instead of html attr",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-27T12:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46c3b39186171964c1517cf4ad5e1acf80607577",
          "body": "Because MV3 doesn't support setTimeout",
          "is_bot": false,
          "headline": "Use alarms instead of setTimeout in background script",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-27T12:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00e4574990e35e826b7b26a923f10a35772fd46c",
          "body": "... Because window doesn't exist with mv3",
          "is_bot": false,
          "headline": "Use crypto.getRandomValues instead of window.crypto.getRandomValues",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-27T12:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f01c57a63ff0c9fbdf504003bbd5ed355a2e6d90",
          "body": "This change is necessary in order to port Firenvim to manifest v3, and\ngenerating things at build time feels good. It's a bit disappointing to\nhave to abandon svg for PNG though.",
          "is_bot": false,
          "headline": "Generate disabled/error/warnings at build time instead of runtime",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-27T08:36:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a66b639c91d2f91628783e72a3c48fd51b70751c",
          "body": null,
          "is_bot": false,
          "headline": "Re-enable all tests (accidentally disabled...)",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-27T08:36:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5528cff008aa29431f9de982da4b10fd5ded4549",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade testsuite",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-26T19:32:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8386005b895c2505a670ddf7a11d61b3614d6278",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade upgradable deps",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-26T19:32:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dce8fb5efccc68679d1e0e9afbacc19402b5ba79",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade typescript to v6",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-26T19:32:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69d3411d08d35bb9b3e84b9deaff4b9b078a30e3",
          "body": "This should ease porting firenvim to manifest v3",
          "is_bot": false,
          "headline": "testing: remove uses of eval",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-23T05:22:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b68449b92dfea73a54e4c8f2307fc244a3a574bd",
          "body": null,
          "is_bot": false,
          "headline": "CI: timeout after 5 min on every install step",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec324ed8219abc62a6878865bef2b90d5eceade0",
          "body": "selenium-webdriver 4.41.0 uses selenium-manager to find browser/driver\npaths, which on Ubuntu 24.04 returns /usr/bin/firefox (the system snap\nFirefox) instead of Firefox Developer Edition prepended to PATH.\n\nSnap Firefox does not accept unsigned extensions the same way as Firefox\nDev Edition, causin\n[…]\ng PATH directly (same as selenium-webdriver 4.6.0 did),\nexplicitly setting geckodriver and Firefox paths in the driver builder,\nand using ServiceBuilder to prevent selenium-manager from being invoked.",
          "is_bot": false,
          "headline": "CI: bypass selenium-manager to use Firefox Dev Edition from PATH",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d45575232967177d7c19defa2b9120b1939543fe",
          "body": "This should enable all possible protocols and work around selenium\ndriver version issues.",
          "is_bot": false,
          "headline": "CI: set selenium remote.active-protocols to 3",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db4475a62fa583bec9f8784b5c1c7b17e375a23f",
          "body": null,
          "is_bot": false,
          "headline": "CI: Manually install firefox instead of using broken npm package",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "281e56a6196d82350b1ecf0a1b1686fc6639750e",
          "body": null,
          "is_bot": false,
          "headline": "CI: Upgrade CodeQL action to v4",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dded61cb03b2f31bfb4ed229dcdc555db2a15bc4",
          "body": "They want me to do various stupid upgrades in order to get my CI working\nagain and I don't have the patience for that. The CodeQL step will\nsuffice.",
          "is_bot": false,
          "headline": "CI: Remove anything eslint related",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c46a2be9a30543fbbd827c3ee7fe8490b3ecefa",
          "body": null,
          "is_bot": false,
          "headline": "CI: Upgrade deps and fix testsuite",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2026-04-16T06:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a18ef908ac06b52ad9333b70e3e630b0a56ecb3d",
          "body": null,
          "is_bot": false,
          "headline": "Normalize capitalization of macOS where not semantic",
          "author_name": "Caleb Maclennan",
          "author_login": "alerque",
          "committed_at": "2025-09-30T16:42:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7456451941d811f78fe46777d819ca6025d6f198",
          "body": null,
          "is_bot": false,
          "headline": "Normalize capitalization and references to Neovim where not semantic",
          "author_name": "Caleb Maclennan",
          "author_login": "alerque",
          "committed_at": "2025-09-30T16:42:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c3b81444944ed51e9eb50b158b71ee26b611575",
          "body": null,
          "is_bot": false,
          "headline": "Add support for Zen",
          "author_name": "Hendrik Spohr",
          "author_login": null,
          "committed_at": "2025-08-23T13:49:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c927486daff6d1eb8a0d61fd9e264bc1bf5f2c36",
          "body": "In #1683, the user reports that get_windows_env_path returns truncated\nvalues for %AppData%, and that replacing the `-3` to `-2` in the value\nreturned by get_windows_env_path fixes this issue.\nOn my machine, it seems that `-3` is still the correct value. This is\nweird, because system()'s `:help` say\n[…]\nd be consistent.\nWe just shrug our shoulders at this mistery and start using trim()\ninstead of hard-coding the amount of characters to remove from\nsystem()'s output in order to fix this.\n\nCloses #1683",
          "is_bot": false,
          "headline": "firenvim.vim:get_windows_env_path: deal with inconsistent system()",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2025-07-22T09:43:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b92fba804234d0a4be4acd17db20ddf9f2cd82a0",
          "body": "Closes #1679",
          "is_bot": false,
          "headline": "Add support for waterfox",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2025-07-22T09:28:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4ab7d2aeb145cd93db8660cb134f771722f2b5e",
          "body": null,
          "is_bot": false,
          "headline": "package-lock.json: run `npm audit fix`",
          "author_name": "Ghjuvan Lacambre",
          "author_login": "glacambre",
          "committed_at": "2025-03-22T13:02:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b30f633321dc82e9a73cec061d98f2d4cb8e8f28",
          "body": "Hopefully will make the failures to download neovim stable on linux\ndisappear.",
          "is_bot": false,
          "headline": "test.yml: upgrade action-setup-vim to latest version",
          "author_name": "Ghjuvan Lacambre",
          "author_login": "glacambre",
          "committed_at": "2025-03-22T13:01:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1d596e9b334efaabdc1a2268aba1aa7bb76f858",
          "body": "vint.yml is failing due to the required python version being\nunavailable. Can we stop asking for a specific version?",
          "is_bot": false,
          "headline": "vint.yml: try to get rid of setup-python action",
          "author_name": "Ghjuvan Lacambre",
          "author_login": "glacambre",
          "committed_at": "2025-03-22T12:19:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8a5fa6f1ed42536490acf0840497c40331c184f",
          "body": null,
          "is_bot": false,
          "headline": "README.md: about:addons url fix",
          "author_name": "Vitaly Zdanevich",
          "author_login": "vitaly-zdanevich",
          "committed_at": "2025-01-09T19:26:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e83fcb62ea44d8f7b7935f17f864eae30abfddd",
          "body": "This prevents issues with Vim.",
          "is_bot": false,
          "headline": "Move FirenvimUIEnterAugroup creation to firenvim#run for #1660",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2025-01-08T18:40:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c0441c923c092cbc3f79d2ec9781cdce01d4aed",
          "body": "Necessary in order for the eslint ci to start working again",
          "is_bot": false,
          "headline": "Upgrade to typescript 4.8.4",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2025-01-08T18:20:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09697387ff5b7120db7b9b15404ab75fb6780388",
          "body": "And add setuptools on top, seems to be required now",
          "is_bot": false,
          "headline": "vint.yml: upgrade python version",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2025-01-08T17:48:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd2d6f6b3b87b3726d5ef59adfe8a6c444889dda",
          "body": "Fix #1651 for real :). Verified locally by command `nvim +'call\nfirenvim#install(0)' +q`. Saw the firenvim.json file installed under\n`~/Library/Application Support/Microsoft Edge/NativeMessagingHosts`.",
          "is_bot": false,
          "headline": "Fix the NativeMessagingHosts path for Microsoft Edge",
          "author_name": "Matt Wang",
          "author_login": "ymattw",
          "committed_at": "2024-12-15T09:46:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af68897a5257f20f50e9dd6d08cf7250a069b3ef",
          "body": "Oddly enough, edge on OSX has already been reported as working in #560,\nbut for some reason #1651 reports a different installation path. Check\nfor both.\n\nCloses #1651.",
          "is_bot": false,
          "headline": "firenvim.vim: check for more edge install paths on OSX",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-12-15T08:09:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64f9389b88c8b0c7667d45c171a5f25c42d852fb",
          "body": null,
          "is_bot": false,
          "headline": "test.yml: upgrade to upload-artifact@v4 action",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-09-25T07:15:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "870c4ab3e89c389c74c3d85525c49ca9744c8be1",
          "body": "Issue #1637 reports that resizing the underlying textarea of a Firenvim\niframe can result in flashes of color. This can be particularly visible\nwhen using Firenvim with a dark colorscheme on Github in dark mode.\n\nThe reason for these flashes of color is that when resizing, the iframe\ngets resized fi\n[…]\n ability of\nthe iframe to turn transparent when unfocused (the iframe gets dimmed\ninstead), but given that multiple users complained about this feature,\nit may not be such a bad change.\n\nCloses #1637.",
          "is_bot": false,
          "headline": "Set iframe background color on neovim's default_colors_set (#1637)",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-09-25T07:15:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a73afef1f43997d0d9e739e630ef105a145cf1e1",
          "body": null,
          "is_bot": false,
          "headline": "Update package.json/package-lock.jon",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-09-25T07:15:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb70728c13c305ff35193586d5f6ce68668af063",
          "body": "The behaviors of `firenvim#install` and `firenvim#uninstall` on WSL is\ncontrolled by the script variable `s:is_wsl`: we initialize it to false\nto (un)install firenvim on wsl side, and then set it to 1 to (un)install\non windows host side.\n\nCurrently, only `firenvim#install` and `firenvim#uninstall` c\n[…]\nstalls scripts on host only, no scripts on WSL\nvim.fn[\"firenvim#install\"](0)\n```\n\nTo fix this, a `try ... finally` block resets `s:is_wsl` even\nif the two functions throw errors or run unsuccessfully.",
          "is_bot": false,
          "headline": "fix: reset s:is_wsl after calling (un)install",
          "author_name": "xudyang1",
          "author_login": "xudyang1",
          "committed_at": "2024-08-04T12:56:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4d2eef5fd2a7af0e91b76f1a9715228548316125",
          "body": null,
          "is_bot": false,
          "headline": "README.md: update lazy.nvim instructions",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-07-30T06:14:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5ea28ffaa02e3c6829896f24b80e01440875b03",
          "body": "This PR is a continuation of #1199 and #1577. #1199 adds support for\nrunning `powershell.exe` when it's not in the path (this occurs when\nWSL user sets `appendWindowsPath=false` in `/etc/wsl.conf`). #1577 adds\n`-NonInteractive` option to `powershell.exe` commands.",
          "is_bot": false,
          "headline": "fix: use noninteractive powershell",
          "author_name": "xudyang1",
          "author_login": "xudyang1",
          "committed_at": "2024-07-29T04:33:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6e37476ab3b58cf01ababfe80ec9335798e70e5",
          "body": null,
          "is_bot": false,
          "headline": "capture windows NVIM_APPNAME in batch script",
          "author_name": "Brad Culwell",
          "author_login": "Beastwick18",
          "committed_at": "2024-06-30T16:34:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "992e57666c0d4c301c5a231354b8237d7bae0282",
          "body": "This was probably broken ever since I converted the example to lua.\nThanks a lot to Praful for noticing this, figuring out the solution and\nsharing it.",
          "is_bot": false,
          "headline": "README.md: fix autowrite example",
          "author_name": "praful",
          "author_login": "Praful",
          "committed_at": "2024-06-26T04:45:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e412ab23c5b56b7eb3c361da8a1f8a2e94c51001",
          "body": "According to https://repology.org/project/neovim/versions , most\nsupported distributions now ship a version of Neovim recent enough to\nrun Firenvim, so hopefully even outdated versions from distributions\nshould not cause us problems.\n\nThis change is still slightly risky because according to repology\n[…]\nenvim might not work\nwith. According to https://ubuntu.com/about/release-cycle , Ubuntu 20.04\nwill stop being supported in April 2025, so let's take a gamble and\nattempt to solve issues such as #1614.",
          "is_bot": false,
          "headline": "firenvim.vim: attempt to use nvim in $PATH if found",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-06-06T06:16:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97631627138e6c812cd6066f8236017c4442e2ae",
          "body": "From #1614.",
          "is_bot": false,
          "headline": "firenvim.vim: also handle homebrew installed in /opt/homebrew",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-06-06T06:16:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf4ff99033640b5ec33890bcdc892ddc436ed8e5",
          "body": "Closes #1359",
          "is_bot": false,
          "headline": "FirenvimElement.ts: use ctrlkey to trigger update events on textarea",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-05-25T08:22:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1cb477b2d9b36bbcfb0e5e8c62393dcdc27f5fe",
          "body": null,
          "is_bot": false,
          "headline": "test.yml: install geckodriver",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-05-25T07:36:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc72687977e1c34259c42f0e408655cf2638760d",
          "body": null,
          "is_bot": false,
          "headline": "test.yml: update brew install instructions for firefox",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-05-12T06:39:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4045731dc83017d1baa733cfb18e1b26a98b156",
          "body": null,
          "is_bot": false,
          "headline": "workflows/test.yml: update action-setup-vim action from 1.2.13 to 1.3.3",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-05-12T05:48:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0845e0e846d9fa1df1e46073288968816cd99134",
          "body": "I've had to set up a filter that kills any email sent from gmail to my\ngithub email due to spam.",
          "is_bot": false,
          "headline": "README.md: change email address",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-05-12T05:25:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03ba12a5a92a02d171005775a8150998c4060a74",
          "body": "- Add firenvim#write() function enabling users to write arbitrary data (236ea75)\n- Better messages for firenvim_config misconfiguration (cbbd7e8)\n- Fix for firenvim being unusable with nightly neovim (79ca923 / #1603)\n- Better WSL support (#1578) (7e2f12b)",
          "is_bot": false,
          "headline": "package.json: bump version 0.2.15 -> 0.2.16",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:42:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "add47beb14dc9837ae39e9419ab5effadbb2af6f",
          "body": null,
          "is_bot": false,
          "headline": "release.sh: replace manual call to addons-linter with npm indirection",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:40:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a9b47c64f62e6d344932b4e2501e6392fd94283",
          "body": "extension has apparently been deprecated by Mozilla some time ago",
          "is_bot": false,
          "headline": "FirenvimElement.ts: use s/browser.extension/browser.runtime/",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:40:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9279273f21d8bf50378fafb77089be8a163c14a1",
          "body": null,
          "is_bot": false,
          "headline": "package.json: add lint step to lint firefox extension",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:40:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "236ea75e704f56e6681e89bf87a8f9e82b803316",
          "body": "The goal of this commit is to enable the use case desired by #1589. This\nisn't a perfect fit as the user was asking for a way to setup\npost-processing of their text instead of having to call firenvim#write,\nbut as I am on a tight schedule for publishing a new release I do not\nhave time for further discussions, and following the pattern of\nfirenvim#hide_frame, firenvim#eval_js, firenvim#focus_* feels like a\nvery safe choice.",
          "is_bot": false,
          "headline": "Add firenvim#write() function enabling users to write arbitrary data",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:16:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbbd7e8b6a5f59cff1c3af7fd825fe21b0fc01a7",
          "body": null,
          "is_bot": false,
          "headline": "firenvim.vim: catch settings misconfiguration and turn into message",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T14:16:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "222efad004a117e059206187e6dfe202f619d66e",
          "body": "A vim.ui_attach function whose interface differs from nvim_ui_attach was\nintroduced in 0.9, and would overwrite nvim_ui_attach for Firenvim. The\nonly reason this didn't cause any issues yet is that vim.ui_attach is\nmarked deprecated, but we can't ignore deprecated functions because\notherwise Firenvim breaks immediately when functions get deprecated\n(e.g. which is what happened in #1603).",
          "is_bot": false,
          "headline": "src/Neovim.ts: stop removing `nvim_` from API names due to clash",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T12:15:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79ca923835cf4fd3a8aa37a7f19f0fa4eace19d7",
          "body": "Fixes #1603, and much cleaner anyway.",
          "is_bot": false,
          "headline": "src/frame.ts: replace nvim_call_atomic with nvim_exec_lua",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-04-28T12:15:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e99aa603f5311a850be1d02759b0ec62ce3990a3",
          "body": "Provide type annotation for browser",
          "is_bot": false,
          "headline": "Add @types/firefox-webext-browser",
          "author_name": "Wu, Zhenyu",
          "author_login": "Freed-Wu",
          "committed_at": "2024-04-23T04:26:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3363c140dca2ef0b89e2be0317917f077d752cd7",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo in README",
          "author_name": "Danie-1",
          "author_login": "Danie-1",
          "committed_at": "2024-03-05T16:14:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57db3f22156ab46febc765f74a2ff9b780c22d7e",
          "body": "The http://txti.es website shut down in July 2023:\n\n> Due to bad actors, txti will be shutting permanently on\n> July 1, 2023.\n\nThis commit removes the references to txti.es from\nTROUBLESHOOTING.md.",
          "is_bot": false,
          "headline": "TROUBLESHOOTING.md: Remove reference to txti.es",
          "author_name": "Lars Kellogg-Stedman",
          "author_login": "larsks",
          "committed_at": "2024-03-04T21:47:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b13a6014c921c388171f16dec2acf3be3d8774b",
          "body": null,
          "is_bot": false,
          "headline": "README.md: remove install instructions for unmaintained plugin managers",
          "author_name": "glacambre",
          "author_login": "glacambre",
          "committed_at": "2024-03-02T10:16:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba3dc0b4eb1c0fc32a74df430a4203f24f3206b2",
          "body": "And add steps to fix issues caused by Snap/Flatpak to TROUBLESHOOTING.md\njust in case. Solution found by Tyalie, wording/mistakes authored by\nyours truly.\n\nCloses #1591",
          "is_bot": false,
          "headline": "README.md: remove message about unsupported Snap/Flatpak",
          "author_name": "Sophie 'Tyalie' Friedrich",
          "author_login": "tyalie",
          "committed_at": "2024-03-02T10:16:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2dd6d3bcf3309a7dd30c79b3b3c03ab55cea6e2",
          "body": "`vim.fn.has()` or `has()` can help check current runtime condition.\n\nAs `:h has()` indicates:\n\n> Returns 1 if {feature} is supported, 0 otherwise.\n> ...\n> 2. Runtime condition or other pseudo-feature. For example the\n>     \"win32\" feature checks if the current system is Windows:\n>         :if has(\"w\n[…]\n..\n>         wsl\t\tWSL (Windows Subsystem for Linux) system.\n\nInspired from:\n\nhttps://github.com/neovim/neovim/blob/dc466f9a63ede5e2bbddc33688c0c972abfe9a52/runtime/autoload/provider/clipboard.vim#L132",
          "is_bot": false,
          "headline": "refactor: add has('wsl') to help set s:is_wsl",
          "author_name": "xudyang1",
          "author_login": "xudyang1",
          "committed_at": "2024-01-23T07:49:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "525485ca6fd6024dc8e251cf10c28940f45570a0",
          "body": "The uninstallation logic is similar to `firenvim#install`:\n> At first, is_wsl is set to false, even on WSL. This lets us uninstall\nfirenvim on the wsl side.\n> Then, we set is_wsl to true if we're on wsl and launch\nfirenvim#uninstall again, uninstalling things on the host side.",
          "is_bot": false,
          "headline": "fix: add uninstall on host side from WSL (#1576)",
          "author_name": "xudyang1",
          "author_login": "xudyang1",
          "committed_at": "2024-01-23T06:24:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "471354b1721d7082ffc3468dc84578e6ee42f163",
          "body": "`%APPDATA%` points to `%UserProfile%/AppData/Roaming`, while\n`%LOCALAPPDATA%` points to `%UserProfile%/AppData/Local`.\n`%LOCALAPPDATA%` should be used when refering to firenvim script path\n\n[Reference](https://superuser.com/a/632905)",
          "is_bot": false,
          "headline": "chore(doc): use correct env var in TROUBLESHOOTING",
          "author_name": "xudyang1",
          "author_login": "xudyang1",
          "committed_at": "2024-01-20T08:09:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 9,
      "commits_last_year": 58,
      "latest_release_at": "2026-05-08T08:09:36Z",
      "latest_release_tag": "0.2.17",
      "releases_from_tags": false,
      "days_since_last_push": 71,
      "active_weeks_last_year": 8,
      "days_since_latest_release": 78,
      "mean_days_between_releases": 228.1
    },
    "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": []
    },
    "popularity": {
      "forks": 158,
      "stars": 6087,
      "watchers": 24,
      "fork_history": {
        "days": [
          {
            "date": "2019-05-09",
            "count": 2
          },
          {
            "date": "2019-05-11",
            "count": 1
          },
          {
            "date": "2019-08-08",
            "count": 1
          },
          {
            "date": "2019-10-03",
            "count": 1
          },
          {
            "date": "2019-10-06",
            "count": 1
          },
          {
            "date": "2019-10-13",
            "count": 1
          },
          {
            "date": "2019-10-15",
            "count": 1
          },
          {
            "date": "2019-10-24",
            "count": 1
          },
          {
            "date": "2019-10-25",
            "count": 1
          },
          {
            "date": "2019-11-04",
            "count": 2
          },
          {
            "date": "2019-11-16",
            "count": 1
          },
          {
            "date": "2019-11-19",
            "count": 1
          },
          {
            "date": "2019-11-23",
            "count": 1
          },
          {
            "date": "2019-12-10",
            "count": 1
          },
          {
            "date": "2020-01-09",
            "count": 1
          },
          {
            "date": "2020-01-10",
            "count": 1
          },
          {
            "date": "2020-01-28",
            "count": 1
          },
          {
            "date": "2020-03-20",
            "count": 1
          },
          {
            "date": "2020-03-21",
            "count": 1
          },
          {
            "date": "2020-05-06",
            "count": 1
          },
          {
            "date": "2020-06-03",
            "count": 1
          },
          {
            "date": "2020-06-06",
            "count": 1
          },
          {
            "date": "2020-06-13",
            "count": 1
          },
          {
            "date": "2020-06-17",
            "count": 1
          },
          {
            "date": "2020-07-03",
            "count": 1
          },
          {
            "date": "2020-07-04",
            "count": 1
          },
          {
            "date": "2020-08-10",
            "count": 1
          },
          {
            "date": "2020-08-20",
            "count": 1
          },
          {
            "date": "2020-08-31",
            "count": 1
          },
          {
            "date": "2020-10-15",
            "count": 1
          },
          {
            "date": "2020-11-06",
            "count": 1
          },
          {
            "date": "2020-11-11",
            "count": 1
          },
          {
            "date": "2020-11-14",
            "count": 1
          },
          {
            "date": "2020-11-23",
            "count": 1
          },
          {
            "date": "2020-11-25",
            "count": 1
          },
          {
            "date": "2020-12-07",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-07",
            "count": 1
          },
          {
            "date": "2021-02-15",
            "count": 1
          },
          {
            "date": "2021-02-18",
            "count": 1
          },
          {
            "date": "2021-02-19",
            "count": 1
          },
          {
            "date": "2021-03-09",
            "count": 1
          },
          {
            "date": "2021-04-01",
            "count": 1
          },
          {
            "date": "2021-04-12",
            "count": 1
          },
          {
            "date": "2021-07-01",
            "count": 2
          },
          {
            "date": "2021-07-03",
            "count": 1
          },
          {
            "date": "2021-07-13",
            "count": 1
          },
          {
            "date": "2021-07-16",
            "count": 1
          },
          {
            "date": "2021-07-20",
            "count": 1
          },
          {
            "date": "2021-07-22",
            "count": 1
          },
          {
            "date": "2021-07-23",
            "count": 1
          },
          {
            "date": "2021-08-09",
            "count": 1
          },
          {
            "date": "2021-08-16",
            "count": 1
          },
          {
            "date": "2021-09-05",
            "count": 1
          },
          {
            "date": "2021-09-11",
            "count": 1
          },
          {
            "date": "2021-10-04",
            "count": 1
          },
          {
            "date": "2021-10-11",
            "count": 1
          },
          {
            "date": "2021-10-21",
            "count": 1
          },
          {
            "date": "2021-11-17",
            "count": 1
          },
          {
            "date": "2021-11-28",
            "count": 1
          },
          {
            "date": "2021-12-02",
            "count": 1
          },
          {
            "date": "2021-12-09",
            "count": 1
          },
          {
            "date": "2021-12-16",
            "count": 1
          },
          {
            "date": "2021-12-27",
            "count": 1
          },
          {
            "date": "2022-02-07",
            "count": 1
          },
          {
            "date": "2022-02-17",
            "count": 1
          },
          {
            "date": "2022-02-19",
            "count": 1
          },
          {
            "date": "2022-03-07",
            "count": 1
          },
          {
            "date": "2022-03-20",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-03-24",
            "count": 1
          },
          {
            "date": "2022-04-05",
            "count": 1
          },
          {
            "date": "2022-04-12",
            "count": 1
          },
          {
            "date": "2022-04-20",
            "count": 1
          },
          {
            "date": "2022-05-09",
            "count": 1
          },
          {
            "date": "2022-06-14",
            "count": 1
          },
          {
            "date": "2022-06-25",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-07-16",
            "count": 1
          },
          {
            "date": "2022-07-18",
            "count": 1
          },
          {
            "date": "2022-07-22",
            "count": 1
          },
          {
            "date": "2022-07-26",
            "count": 1
          },
          {
            "date": "2022-08-03",
            "count": 1
          },
          {
            "date": "2022-08-27",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-10-05",
            "count": 1
          },
          {
            "date": "2022-10-07",
            "count": 1
          },
          {
            "date": "2022-10-11",
            "count": 1
          },
          {
            "date": "2022-10-19",
            "count": 1
          },
          {
            "date": "2022-11-03",
            "count": 1
          },
          {
            "date": "2022-11-10",
            "count": 1
          },
          {
            "date": "2022-11-14",
            "count": 1
          },
          {
            "date": "2022-11-19",
            "count": 1
          },
          {
            "date": "2022-11-22",
            "count": 1
          },
          {
            "date": "2022-12-06",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 1
          },
          {
            "date": "2022-12-25",
            "count": 1
          },
          {
            "date": "2023-01-06",
            "count": 1
          },
          {
            "date": "2023-01-09",
            "count": 1
          },
          {
            "date": "2023-01-12",
            "count": 1
          },
          {
            "date": "2023-01-13",
            "count": 1
          },
          {
            "date": "2023-01-20",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-02-21",
            "count": 1
          },
          {
            "date": "2023-03-26",
            "count": 1
          },
          {
            "date": "2023-03-29",
            "count": 1
          },
          {
            "date": "2023-05-19",
            "count": 1
          },
          {
            "date": "2023-05-25",
            "count": 1
          },
          {
            "date": "2023-06-02",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 1
          },
          {
            "date": "2023-07-16",
            "count": 1
          },
          {
            "date": "2023-08-02",
            "count": 1
          },
          {
            "date": "2023-09-07",
            "count": 1
          },
          {
            "date": "2023-09-27",
            "count": 1
          },
          {
            "date": "2023-10-10",
            "count": 1
          },
          {
            "date": "2023-12-27",
            "count": 1
          },
          {
            "date": "2024-01-20",
            "count": 1
          },
          {
            "date": "2024-03-05",
            "count": 2
          },
          {
            "date": "2024-03-26",
            "count": 1
          },
          {
            "date": "2024-04-07",
            "count": 1
          },
          {
            "date": "2024-06-05",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-18",
            "count": 1
          },
          {
            "date": "2024-06-19",
            "count": 1
          },
          {
            "date": "2024-06-29",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-09-08",
            "count": 1
          },
          {
            "date": "2024-09-15",
            "count": 1
          },
          {
            "date": "2024-10-05",
            "count": 1
          },
          {
            "date": "2024-11-12",
            "count": 1
          },
          {
            "date": "2024-12-13",
            "count": 1
          },
          {
            "date": "2024-12-15",
            "count": 1
          },
          {
            "date": "2024-12-20",
            "count": 1
          },
          {
            "date": "2024-12-28",
            "count": 1
          },
          {
            "date": "2024-12-30",
            "count": 1
          },
          {
            "date": "2025-01-08",
            "count": 1
          },
          {
            "date": "2025-02-24",
            "count": 1
          },
          {
            "date": "2025-04-02",
            "count": 1
          },
          {
            "date": "2025-04-15",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-05-08",
            "count": 1
          },
          {
            "date": "2025-05-25",
            "count": 1
          },
          {
            "date": "2025-07-29",
            "count": 1
          },
          {
            "date": "2025-08-23",
            "count": 1
          },
          {
            "date": "2025-09-11",
            "count": 1
          },
          {
            "date": "2025-09-23",
            "count": 1
          },
          {
            "date": "2025-10-26",
            "count": 1
          },
          {
            "date": "2025-11-15",
            "count": 1
          },
          {
            "date": "2025-11-28",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-05-11",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          },
          {
            "date": "2026-07-24",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 158,
        "total_forks": 158
      },
      "star_history": null,
      "open_issues_and_prs": 95
    },
    "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": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 71833,
      "source_files_sampled": 34,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.7.3",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-395f-4hp3-45gv",
              "GHSA-w7jw-789q-3m8p"
            ],
            "fixed_version": "1.9.0",
            "advisory_count": 2,
            "oldest_advisory_days": 46
          },
          {
            "name": "sharp",
            "direct": true,
            "version": "0.33.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.20.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-58qx-3vcg-4xpx",
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 2,
            "oldest_advisory_days": 68
          },
          {
            "name": "adm-zip",
            "direct": false,
            "version": "0.5.17",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-xcpc-8h2w-3j85"
            ],
            "fixed_version": "0.6.0",
            "advisory_count": 1,
            "oldest_advisory_days": 15
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.14",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 2,
            "oldest_advisory_days": 5
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 2,
            "oldest_advisory_days": 5
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4c8g-83qw-93j6",
              "GHSA-q3j6-qgpj-74h6",
              "GHSA-v2hh-gcrm-f6hx",
              "GHSA-v39h-62p7-jpjc"
            ],
            "fixed_version": "4.1.1",
            "advisory_count": 4,
            "oldest_advisory_days": 78
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 40
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 40
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 1,
            "oldest_advisory_days": 60
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.25.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-35p6-xmwp-9g52",
              "GHSA-g8m3-5g58-fq7m",
              "GHSA-hm92-r4w5-c3mj",
              "GHSA-p88m-4jfj-68fv",
              "GHSA-pr7r-676h-xcf6",
              "GHSA-vmh5-mc38-953g",
              "GHSA-vxpw-j846-p89q"
            ],
            "fixed_version": "8.5.0",
            "advisory_count": 7,
            "oldest_advisory_days": 37
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "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": 94
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.2,
            "advisory_ids": [
              "GHSA-4x5r-pxfx-6jf8"
            ],
            "fixed_version": "8.0.0-rc.6",
            "advisory_count": 1,
            "oldest_advisory_days": 40
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 11,
          "critical": 1
        },
        "advisory_count": 28,
        "affected_count": 13,
        "assessed_count": 737,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 2
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@types/msgpack-lite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.1.8"
        },
        {
          "name": "@types/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "16.10.2"
        },
        {
          "name": "@types/selenium-webdriver",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.35.5"
        },
        {
          "name": "@types/ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.2.0"
        },
        {
          "name": "ace-builds",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.13"
        },
        {
          "name": "addons-linter",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.2.0"
        },
        {
          "name": "codemirror",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.63.1"
        },
        {
          "name": "copy-webpack-plugin",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "imports-loader",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.1"
        },
        {
          "name": "istanbul-lib-coverage",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.0"
        },
        {
          "name": "jest",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^30.3.0"
        },
        {
          "name": "monaco-editor",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.28.1"
        },
        {
          "name": "msgpack-lite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.1.26"
        },
        {
          "name": "nyc",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.1.0"
        },
        {
          "name": "selenium-webdriver",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.41.0"
        },
        {
          "name": "sharp",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.33.1"
        },
        {
          "name": "ts-jest",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^29.4.6"
        },
        {
          "name": "ts-loader",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.2.6"
        },
        {
          "name": "typescript",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "6.0.3"
        },
        {
          "name": "web-ext",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.0.0"
        },
        {
          "name": "web-ext-types",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "3.2.1"
        },
        {
          "name": "webextension-polyfill",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "0.10.0"
        },
        {
          "name": "webpack",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.89.0"
        },
        {
          "name": "webpack-cli",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "4.10.0"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.20.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@types/msgpack-lite",
            "direct": true,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": true,
            "version": "16.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/selenium-webdriver",
            "direct": true,
            "version": "4.35.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": true,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "ace-builds",
            "direct": true,
            "version": "1.43.6",
            "ecosystem": "npm"
          },
          {
            "name": "addons-linter",
            "direct": true,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "codemirror",
            "direct": true,
            "version": "5.65.21",
            "ecosystem": "npm"
          },
          {
            "name": "copy-webpack-plugin",
            "direct": true,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imports-loader",
            "direct": true,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": true,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": true,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "monaco-editor",
            "direct": true,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "msgpack-lite",
            "direct": true,
            "version": "0.1.26",
            "ecosystem": "npm"
          },
          {
            "name": "nyc",
            "direct": true,
            "version": "15.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "selenium-webdriver",
            "direct": true,
            "version": "4.43.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": true,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "ts-jest",
            "direct": true,
            "version": "29.4.9",
            "ecosystem": "npm"
          },
          {
            "name": "ts-loader",
            "direct": true,
            "version": "9.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": true,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "web-ext",
            "direct": true,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "web-ext-types",
            "direct": true,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "webextension-polyfill",
            "direct": true,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": true,
            "version": "5.106.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-cli",
            "direct": true,
            "version": "4.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@bazel/runfiles",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@devicefarmer/adbkit",
            "direct": false,
            "version": "3.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "@devicefarmer/adbkit-logcat",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@devicefarmer/adbkit-monkey",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@discoveryjs/json-ext",
            "direct": false,
            "version": "0.5.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/wasi-threads",
            "direct": false,
            "version": "1.2.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": "@fluent/syntax",
            "direct": false,
            "version": "0.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "@fregante/relaxed-json",
            "direct": false,
            "version": "2.0.0",
            "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/sharp-darwin-arm64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.33.5",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/cliui",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/diff-sequences",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/get-type",
            "direct": false,
            "version": "30.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/pattern",
            "direct": false,
            "version": "30.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "30.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/snapshot-utils",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "30.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "30.3.0",
            "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": "@mdn/browser-compat-data",
            "direct": false,
            "version": "7.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "npm"
          },
          {
            "name": "@pinojs/redact",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgjs/parseargs",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/config.env-replace",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/network.ca-file",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/npm-conf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.34.49",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "15.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint-scope",
            "direct": false,
            "version": "3.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/firefox-webext-browser",
            "direct": false,
            "version": "120.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jest",
            "direct": false,
            "version": "30.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimatch",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.35",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm-eabi",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm64",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-arm64",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-x64",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-freebsd-x64",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-musl",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-gnu",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-musl",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-wasm32-wasi",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-x64-msvc",
            "direct": false,
            "version": "1.11.1",
            "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": "@webpack-cli/configtest",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webpack-cli/info",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webpack-cli/serve",
            "direct": false,
            "version": "1.7.0",
            "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": "acorn",
            "direct": false,
            "version": "8.16.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": "addons-moz-compare",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "addons-scanner-utils",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "adm-zip",
            "direct": false,
            "version": "0.5.17",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.18.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-align",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "append-transform",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-differ",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "atomic-sleep",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "atomically",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.22",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "bs-logger",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-equal-constant-time",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-name",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caching-transform",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001791",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-launcher",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-trace-event",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-boxes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-deep",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "color",
            "direct": false,
            "version": "4.2.3",
            "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": "color-string",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "columnify",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "9.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-tags",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-stream",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "config-chain",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "configstore",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "debounce",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser-id",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "default-require-extensions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-lazy-prop",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ecdsa-sig-formatter",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.344",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "envinfo",
            "direct": false,
            "version": "7.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es6-error",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-goat",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "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-plugin-no-unsanitized",
            "direct": false,
            "version": "4.1.5",
            "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": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "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": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "event-lite",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit-x",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-patch",
            "direct": false,
            "version": "3.1.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.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "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": "find-cache-dir",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "firefox-profile",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "first-chunk-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fromentries",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fx-runner",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "10.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "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": "global-directory",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-readlink",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "growly",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasha",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "image-size",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "immediate",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "index-to-position",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "int64-buffer",
            "direct": false,
            "version": "0.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-in-ci",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-in-ssh",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-installed-globally",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-npm",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-relative",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-utf8",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-hook",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-processinfo",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jackspeak",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "30.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "30.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "5.9.6",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "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-merge-patch",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.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": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonwebtoken",
            "direct": false,
            "version": "9.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "jszip",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "jwa",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jws",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ky",
            "direct": false,
            "version": "1.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "latest-version",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lie",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lighthouse-logger",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "loader-runner",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.flattendeep",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.includes",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isboolean",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isinteger",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isnumber",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isplainobject",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isstring",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.once",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "marky",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "multimatch",
            "direct": false,
            "version": "6.0.0",
            "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": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-forge",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-notifier",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-preload",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.38",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-exit-leak-free",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "os-shim",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-hash",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-json",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-json-from-dist",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pako",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-parser-stream",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "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": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "pend",
            "direct": false,
            "version": "1.2.0",
            "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": "pino",
            "direct": false,
            "version": "10.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pino-abstract-transport",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pino-std-serializers",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "powershell-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "30.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-on-spawn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-warning",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "promise-toolbox",
            "direct": false,
            "version": "0.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "proto-list",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pupa",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "quick-format-unescaped",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "real-require",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-url",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "release-zalgo",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.12",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-applescript",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-stable-stringify",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "setimmediate",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "shallow-clone",
            "direct": false,
            "version": "3.0.1",
            "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": "shell-quote",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "shellwords",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-swizzle",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sonic-boom",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-sync",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-wrap",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "split",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-buf",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-stream",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stubborn-fs",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stubborn-utils",
            "direct": false,
            "version": "1.0.2",
            "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": "synckit",
            "direct": false,
            "version": "0.11.12",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "terser-webpack-plugin",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "thread-stream",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.25.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unrs-resolver",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "update-notifier",
            "direct": false,
            "version": "7.3.1",
            "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": "uuid",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-merge",
            "direct": false,
            "version": "5.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "when",
            "direct": false,
            "version": "3.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "when-exit",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "widest-line",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wildcard",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "winreg",
            "direct": false,
            "version": "0.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wsl-utils",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "xdg-basedir",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml2js",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "xmlbuilder",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zip-dir",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 737,
        "direct_count": 25,
        "indirect_count": 712
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 7,
        "merged_prs": 868,
        "open_issues": 88,
        "closed_ratio": 0.859,
        "closed_issues": 537,
        "closed_unmerged_prs": 202
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "glacambre",
          "commits": 916,
          "avatar_url": "https://avatars.githubusercontent.com/u/11534587?v=4"
        },
        {
          "type": "User",
          "login": "alerque",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/173595?v=4"
        },
        {
          "type": "User",
          "login": "infokiller",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/10516814?v=4"
        },
        {
          "type": "User",
          "login": "xudyang1",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/61672396?v=4"
        },
        {
          "type": "User",
          "login": "dlobue",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/155965?v=4"
        },
        {
          "type": "User",
          "login": "xeruf",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/13354331?v=4"
        },
        {
          "type": "User",
          "login": "jamespeapen",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/39574560?v=4"
        },
        {
          "type": "User",
          "login": "hankertrix",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/91734413?v=4"
        },
        {
          "type": "User",
          "login": "dundargoc",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/33953936?v=4"
        },
        {
          "type": "User",
          "login": "smackesey",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/1531373?v=4"
        }
      ],
      "contributors_sampled": 41,
      "top_contributor_share": 0.916
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "codeql.yml",
        "luacheck.yml",
        "shellcheck.yml",
        "stale.yml",
        "test.yml",
        "vint.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
            "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 1/11 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 24 contributing companies or organizations",
            "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": 0,
            "reason": "no 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 17 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": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 2,
            "reason": "dependency not pinned by hash detected -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool is run on all commits",
            "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": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "af775c4a1cef5a1e833ae5c6d81afe229ceb639e",
        "ran_at": "2026-07-26T02:52:50Z",
        "aggregate_score": 4.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T02:03:34Z",
      "oldest_open_prs": [
        {
          "number": 1589,
          "created_at": "2024-02-19T23:54:05Z",
          "last_comment_at": "2024-04-28T15:11:10Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 1597,
          "created_at": "2024-03-26T15:53:26Z",
          "last_comment_at": "2024-04-04T13:10:31Z",
          "last_comment_author": "elken"
        },
        {
          "number": 1643,
          "created_at": "2024-10-06T15:11:53Z",
          "last_comment_at": "2024-10-10T05:06:05Z",
          "last_comment_author": "mtanda"
        },
        {
          "number": 1702,
          "created_at": "2025-12-29T21:53:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1703,
          "created_at": "2026-03-03T05:13:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1720,
          "created_at": "2026-05-19T18:13:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1724,
          "created_at": "2026-07-21T23:19:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-05-15T17:16:13Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 322,
          "created_at": "2020-01-02T22:47:03Z",
          "last_comment_at": "2020-07-06T06:57:38Z",
          "last_comment_author": "mirsella"
        },
        {
          "number": 427,
          "created_at": "2020-02-17T20:07:46Z",
          "last_comment_at": "2020-03-01T16:20:29Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 471,
          "created_at": "2020-03-10T14:47:43Z",
          "last_comment_at": "2023-09-07T03:55:25Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 625,
          "created_at": "2020-07-05T16:06:26Z",
          "last_comment_at": "2020-07-26T17:09:28Z",
          "last_comment_author": "mirsella"
        },
        {
          "number": 640,
          "created_at": "2020-07-09T17:47:55Z",
          "last_comment_at": "2020-07-11T22:58:13Z",
          "last_comment_author": "smackesey"
        },
        {
          "number": 672,
          "created_at": "2020-08-01T08:12:27Z",
          "last_comment_at": "2024-05-26T10:49:55Z",
          "last_comment_author": "jedenastka"
        },
        {
          "number": 779,
          "created_at": "2020-11-11T22:19:53Z",
          "last_comment_at": "2023-11-05T12:12:56Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 784,
          "created_at": "2020-11-16T17:30:35Z",
          "last_comment_at": "2022-03-28T12:20:05Z",
          "last_comment_author": "gilbh"
        },
        {
          "number": 823,
          "created_at": "2020-12-08T23:12:45Z",
          "last_comment_at": "2021-05-06T20:59:28Z",
          "last_comment_author": "McArdellje"
        },
        {
          "number": 970,
          "created_at": "2021-03-02T21:20:24Z",
          "last_comment_at": "2021-03-04T09:44:24Z",
          "last_comment_author": "alerque"
        },
        {
          "number": 972,
          "created_at": "2021-03-03T13:28:36Z",
          "last_comment_at": "2025-04-06T21:08:23Z",
          "last_comment_author": "xddinsd"
        },
        {
          "number": 978,
          "created_at": "2021-03-06T21:21:04Z",
          "last_comment_at": "2022-11-20T18:41:31Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 1006,
          "created_at": "2021-04-05T06:31:35Z",
          "last_comment_at": "2023-04-09T13:58:07Z",
          "last_comment_author": "danielb2"
        },
        {
          "number": 1100,
          "created_at": "2021-08-09T08:36:17Z",
          "last_comment_at": "2022-12-18T15:02:51Z",
          "last_comment_author": "XDTZ"
        },
        {
          "number": 1170,
          "created_at": "2021-09-06T08:32:04Z",
          "last_comment_at": "2021-09-12T15:23:45Z",
          "last_comment_author": "glacambre"
        },
        {
          "number": 1171,
          "created_at": "2021-09-06T14:03:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1190,
          "created_at": "2021-09-23T06:02:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1194,
          "created_at": "2021-09-28T06:23:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1248,
          "created_at": "2021-11-19T11:11:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1263,
          "created_at": "2021-12-06T14:13:46Z",
          "last_comment_at": "2024-11-14T21:44:15Z",
          "last_comment_author": "glacambre"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/glacambre/firenvim",
    "host": "github.com",
    "name": "firenvim",
    "owner": "glacambre"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 60,
      "inputs": {
        "security": 51,
        "vitality": 60,
        "community": 79,
        "governance": 53,
        "engineering": 61
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 60,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "at_risk",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 49,
            "inputs": {
              "commits_last_year": 58,
              "human_commit_share": 1,
              "days_since_last_push": 71,
              "active_weeks_last_year": 8
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 71 days ago",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 71
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "8/52 weeks with commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "58 commits in the last year",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 58
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "releases_count": 9,
              "latest_release_tag": "0.2.17",
              "releases_from_tags": false,
              "days_since_latest_release": 78,
              "mean_days_between_releases": 228.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "9 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 78 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 78
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~228.1 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 228.1
                    }
                  }
                ],
                "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": 71,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 71 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 71
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 79,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 86,
            "inputs": {
              "forks": 158,
              "stars": 6087,
              "watchers": 24,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "6,087 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 6087
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "158 forks",
                "points": 18.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 158
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "24 watchers",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 24
                    }
                  }
                ],
                "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 (GPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "GPL-3.0"
                    }
                  }
                ],
                "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": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 41,
              "top_contributor_share": 0.916
            },
            "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 92% of commits",
                "points": 1.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 92
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "41 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 41
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "merged_prs": 868,
              "open_issues": 88,
              "closed_issues": 537,
              "issue_closed_ratio": 0.859,
              "closed_unmerged_prs": 202
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "86% of issues closed",
                "points": 40.2,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 86
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "868/1070 decided PRs merged",
                "points": 31,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 868,
                      "decided": 1070
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/11 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "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": 59,
            "inputs": {
              "followers": 150,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "glacambre",
              "public_repos": 19,
              "account_age_days": 4147
            },
            "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": "150 followers of glacambre",
                "points": 15.7,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 150,
                      "login": "glacambre"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "19 public repos, account ~11 yr old",
                "points": 21.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 19
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 61,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 51,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 47,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.7
            },
            "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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 1/11 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 24 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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 17 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 not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 2",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is run on all commits",
                "points": 5,
                "status": "met",
                "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": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 737 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 737
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "osv",
              "advisories": 28,
              "affected_packages": 13,
              "assessed_packages": 737,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1, high 11, low 1",
              "direct_affected_packages": 2
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "2 affected: sharp 0.33.5 (high 7.3), ws 8.20.0 (high 7.5)",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 2,
                      "packages": "sharp 0.33.5 (high 7.3), ws 8.20.0 (high 7.5)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 737,
              "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": 13
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 17,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.32,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "32 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 17.1,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 32,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 2",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 71833,
              "source_files_sampled": 34,
              "oversized_source_files": 1
            },
            "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": "1/34 source files over 60KB",
                "points": 53.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 34,
                      "oversized": 1
                    }
                  }
                ],
                "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",
    "Could not fetch npm package 'Firenvim' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T02:53:13.435886Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/glacambre/firenvim.svg",
  "full_name": "glacambre/firenvim",
  "license_state": "standard",
  "license_spdx": "GPL-3.0"
}

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

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

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