公开记录
软件健康报告模式 0.27.0 · 指标 2.5.0 · 2026-08-01 19:04 UTC

GovTechSG / oobee

Oobee (formerly known as Purple A11y) is a customisable, automated web accessibility testing tool that allows software development teams to find and fix accessibility problems to improve persons with disabilities (PWDs) access to digital services.

EJSMIT★ 164 星标⑂ 52 复刻始于 2020年6月在 GitHub 上查看 ↗
类型命令行工具如何判定

GovTechSG/oobee 的健康指数为 100 分中的 81 分,处于「优秀」区间。 其得分最高的类别是Vitality(89/100),最低的是Engineering Quality(58/100)。 最近一次更新在 1 天前。 近期的大部分工作由 1 位贡献者完成。

81
总分 / 100
优秀

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均,再依据公开记录的分布进行校准,使各等级具有百分位含义;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 34(存在风险)的上限。

81
卓越93-100公开记录中的最高层级(约前 5%);基本满足所有检验标准
优秀80-92各方面均表现强劲;仅有少量不足
良好65-79健康;不足之处有限且可控
中等50-64可接受,但存在明显不足;建议进行审查
薄弱35-49多个领域存在实质性薄弱环节
存在风险20-34存在重大薄弱环节;采用时应保持审慎
危急1-19问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

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

加权总体分 69 经校准后在公布的指数量表上为 81(记录校准 2026-08-02)。

所有权

312 关注者171 个公开仓库始于 2015年5月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
npm@govtechsg/oobee0.11.359,435499 天前

按类别列示的指标

活力

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

89优秀 · 占总体的 21%
评分方式
36/36推送新近度 — 最近一次推送于 1 天前
24.2/36提交节奏 — 52 周中有 35 周有提交
18/18提交量 — 最近一年 265 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year265
human_commit_share0.82
days_since_last_push1
active_weeks_last_year35

发布纪律

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

社区与采用

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

67良好 · 占总体的 17%
评分方式
35.9/60星标 — 164 个星标
14.2/25复刻 — 52 个复刻
3.9/15关注者 — 6 位关注者
所用输入
forks52
stars164
watchers6
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

72良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
13.5/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
readme_badges
has_contributing
has_issue_template
has_code_of_conduct
readme_badge_services
has_pull_request_template
评分方式
63.7/80月度下载量 — npm 合计每月 59,435 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packages@govtechsg/oobee
dependents
ecosystemsnpm
total_downloads
monthly_downloads59,435
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

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

65良好 · 占总体的 23%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
8.3/22.5提交分布 — 头号贡献者编写了 63% 的提交
13.5/13.5贡献者广度 — 29 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled29
top_contributor_share0.633
评分方式
31.1/42议题解决 — 74% 的议题已关闭
25.6/30PR 接受 — 已裁定的 PR 中 642/751 已合并
0/13Newcomer PR acceptance — 30 天内没有首次贡献者的 PR 得到裁决
0/15OpenSSF Scorecard:Code-Review — Found 0/26 approved changesets -- score normalized to 0
所用输入
merged_prs642
open_issues13
closed_issues37
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0.74
closed_unmerged_prs109
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
已排除计分(无数据或不适用):newcomer_pr_acceptance。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
17.9/25所有者影响力 — GovTechSG 有 312 位关注者
25/25既往记录 — 171 个公开仓库,账户约 11 年
所用输入
followers312
owner_typeOrganization
is_verified
owner_loginGovTechSG
public_repos171
account_age_days4,097
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
35/35发布时效 — 最近一次发布于 9 天前
20/20版本历史 — 49 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@govtechsg/oobee
ecosystemsnpm
any_deprecated
min_days_since_publish9

工程质量

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

58中等 · 占总体的 19%

工程实践

64中等
评分方式
24/24CI 工作流 — 5 个工作流
24/24存在测试
16/16Linter 配置 — eslint.config.js
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
所用输入
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

安全

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

64中等 · 占总体的 16%

安全态势

55中等
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
0/2.5CI-Tests — 0 out of 17 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/26 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
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
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5.5
已排除计分(无数据或不适用):branch_protection。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages500
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 npm:@govtechsg/oobee@0.11.3 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 500 个软件包。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?权重刻意设小(4%):代理工具链是一项真实的维护信号,但完全不具备的仓库仍可达到 100/100。

73良好 · 占总体的 4%
评分方式
45/45代理指令 — AGENTS.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 82 次人类提交中有 69 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.841
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes40,971
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.js
11/11静态类型检查 — examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 48 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 7 次为自动依赖更新
1/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsexamples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json
agent_commit_share0.48
toolchain_manifests
dependency_bot_commit_share0.07
评分方式
27/45可类型检查的代码 — EJS,已配置类型检查(examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)
52.3/55可控的文件大小 — 采样的 82 个源文件中有 4 个超过 60KB
所用输入
primary_languageEJS
largest_source_bytes1,456,005
source_files_sampled82
oversized_source_files4
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

164GitHub 星标
29贡献者
265最近 12 个月提交数
1距最近推送天数
98发布版本数
1巴士系数(bus factor)
13开放议题
npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

更多细节

Star 与 Fork 历史 0 ★ / 52 ⇿
0Star
52Fork
96发布

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

010203040504822020-092023-082026-07
主版本 0次版本 2修订 93

每个点涵盖 6 天。

OpenSSF Scorecard 5.5 / 10
5.5综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-08-01 19:03 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
0CI-Tests0 out of 17 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/26 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
直接依赖 39
注册表软件包版本约束清单文件
npm@aws-sdk/client-s3^3.1049.0package.json
npm@json2csv/node^7.0.3package.json
npm@napi-rs/canvas^0.1.53package.json
npm@sentry/node^10.58.0package.json
npm@types/aws-sdk^0.0.42package.json
npmaxe-core^4.11.4package.json
npmaxios^1.8.2package.json
npmbase64-stream^1.0.0package.json
npmcheerio^1.0.0-rc.12package.json
npmcrawlee^3.17.0package.json
npmejs^3.1.9package.json
npmfile-type^21.3.3package.json
npmfs-extra^11.2.0package.json
npmglob^13.0.6package.json
npmhttps^1.0.0package.json
npminquirer^9.2.12package.json
npmjsdom^29.0.0package.json
npmjszip^3.10.1package.json
npmlodash^4.18.1package.json
npmmime^4.0.7package.json
npmmime-types^2.1.35package.json
npmminimatch^10.2.4package.json
npmpdfjs-distgithub:veraPDF/pdfjs-dist#v4.4.168-taggedPdf-0.1.20package.json
npmplaywright^1.61.1package.json
npmprettier^3.1.0package.json
npmprint-message^3.0.1package.json
npmsafe-regex^2.1.1package.json
npmtext-readability^1.1.0package.json
npmtldts^7.0.27package.json
npmtypescript^5.4.5package.json
npmurl^0.11.3package.json
npmuuid^14.0.0package.json
npmvalidator^13.11.0package.json
npmwhich^4.0.0package.json
npmwinston^3.11.0package.json
npmws^8.21.1package.json
npmxml2js^0.6.2package.json
npmxpath-to-css^1.2.0package.json
npmyargs^17.7.2package.json
全部依赖 941

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

注册表软件包版本关系
npm@aws-sdk/client-s33.1049.0直接
npm@json2csv/node7.0.6直接
npm@napi-rs/canvas0.1.97直接
npm@sentry/node10.58.0直接
npm@types/aws-sdk0.0.42直接
npmaxe-core4.11.4直接
npmaxios1.18.1直接
npmbase64-stream1.0.0直接
npmcheerio1.0.0-rc.12直接
npmcheerio1.2.0直接
npmcrawlee3.17.0直接
npmejs3.1.10直接
npmfile-type21.3.3直接
npmfs-extra11.3.4直接
npmglob13.0.6直接
npmhttps1.0.0直接
npminquirer8.2.7直接
npminquirer9.3.8直接
npmjsdom26.1.0直接
npmjsdom29.0.0直接
npmjszip3.10.1直接
npmlodash4.18.1直接
npmmime4.1.0直接
npmmime-types2.1.35直接
npmminimatch10.2.4直接
npmpdfjs-dist4.4.168直接
npmplaywright1.61.1直接
npmplaywright^1.55.0直接
npmprettier3.8.1直接
npmprint-message3.0.1直接
npmsafe-regex2.1.1直接
npmtext-readability1.1.1直接
npmtldts6.1.86直接
npmtldts7.0.27直接
npmtypescript5.9.3直接
npmtypescript^5.9.3直接
npmurl0.11.4直接
npmuuid14.0.0直接
npmvalidator13.15.26直接
npmwhich2.0.2直接
npmwhich4.0.0直接
npmwinston3.19.0直接
npmws8.21.1直接
npmxml2js0.6.2直接
npmxpath-to-css1.2.0直接
npmyargs17.7.2直接
npm@apify/consts2.53.3间接
npm@apify/datastructures2.0.6间接
npm@apify/log2.5.41间接
npm@apify/ps-tree1.2.0间接
npm@apify/pseudo_url2.0.82间接
npm@apify/timeout0.3.5间接
npm@apify/utilities2.34.1间接
npm@asamuzakjp/css-color3.2.0间接
npm@asamuzakjp/css-color5.0.1间接
npm@asamuzakjp/dom-selector7.0.3间接
npm@asamuzakjp/nwsapi2.3.9间接
npm@aws-crypto/crc325.2.0间接
npm@aws-crypto/crc32c5.2.0间接
npm@aws-crypto/sha1-browser5.2.0间接
npm@aws-crypto/sha256-browser5.2.0间接
npm@aws-crypto/sha256-js5.2.0间接
npm@aws-crypto/supports-web-crypto5.2.0间接
npm@aws-crypto/util5.2.0间接
npm@aws-sdk/core3.974.12间接
npm@aws-sdk/crc64-nvme3.972.8间接
npm@aws-sdk/credential-provider-env3.972.38间接
npm@aws-sdk/credential-provider-http3.972.40间接
npm@aws-sdk/credential-provider-ini3.972.42间接
npm@aws-sdk/credential-provider-login3.972.42间接
npm@aws-sdk/credential-provider-node3.972.43间接
npm@aws-sdk/credential-provider-process3.972.38间接
npm@aws-sdk/credential-provider-sso3.972.42间接
npm@aws-sdk/credential-provider-web-identity3.972.42间接
npm@aws-sdk/middleware-bucket-endpoint3.972.14间接
npm@aws-sdk/middleware-expect-continue3.972.12间接
npm@aws-sdk/middleware-flexible-checksums3.974.20间接
npm@aws-sdk/middleware-location-constraint3.972.10间接
npm@aws-sdk/middleware-sdk-s33.972.41间接
npm@aws-sdk/middleware-ssec3.972.10间接
npm@aws-sdk/nested-clients3.997.10间接
npm@aws-sdk/signature-v4-multi-region3.996.27间接
npm@aws-sdk/token-providers3.1049.0间接
npm@aws-sdk/types3.973.8间接
npm@aws-sdk/util-locate-window3.965.5间接
npm@aws-sdk/xml-builder3.972.24间接
npm@aws/lambda-invoke-store0.2.4间接
npm@babel/code-frame7.29.7间接
npm@babel/compat-data7.29.7间接
npm@babel/core7.29.7间接
npm@babel/generator7.29.7间接
npm@babel/helper-compilation-targets7.29.7间接
npm@babel/helper-globals7.29.7间接
npm@babel/helper-module-imports7.29.7间接
npm@babel/helper-module-transforms7.29.7间接
npm@babel/helper-plugin-utils7.29.7间接
npm@babel/helper-string-parser7.29.7间接
npm@babel/helper-validator-identifier7.29.7间接
npm@babel/helper-validator-option7.29.7间接
npm@babel/helpers7.29.7间接
npm@babel/parser7.29.7间接
npm@babel/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.29.7间接
npm@babel/plugin-syntax-import-meta7.10.4间接
npm@babel/plugin-syntax-json-strings7.8.3间接
npm@babel/plugin-syntax-jsx7.29.7间接
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.29.7间接
npm@babel/template7.29.7间接
npm@babel/traverse7.29.7间接
npm@babel/types7.29.7间接
npm@bcoe/v8-coverage0.2.3间接
npm@borewit/text-codec0.2.2间接
npm@bramus/specificity2.4.2间接
npm@colors/colors1.6.0间接
npm@crawlee/basic3.17.0间接
npm@crawlee/browser3.17.0间接
npm@crawlee/browser-pool3.17.0间接
npm@crawlee/cheerio3.17.0间接
npm@crawlee/cli3.17.0间接
npm@crawlee/core3.17.0间接
npm@crawlee/http3.17.0间接
npm@crawlee/jsdom3.17.0间接
npm@crawlee/linkedom3.17.0间接
npm@crawlee/memory-storage3.17.0间接
npm@crawlee/playwright3.17.0间接
npm@crawlee/puppeteer3.17.0间接
npm@crawlee/templates3.17.0间接
npm@crawlee/types3.17.0间接
npm@crawlee/utils3.17.0间接
npm@csstools/color-helpers5.1.0间接
npm@csstools/color-helpers6.0.2间接
npm@csstools/css-calc2.1.4间接
npm@csstools/css-calc3.1.1间接
npm@csstools/css-color-parser3.1.0间接
npm@csstools/css-color-parser4.0.2间接
npm@csstools/css-parser-algorithms3.0.5间接
npm@csstools/css-parser-algorithms4.0.0间接
npm@csstools/css-syntax-patches-for-csstree1.1.1间接
npm@csstools/css-tokenizer3.0.4间接
npm@csstools/css-tokenizer4.0.0间接
npm@dabh/diagnostics2.0.8间接
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@exodus/bytes1.15.0间接
npm@govtechsg/oobee^0.10.69间接
npm@humanfs/core0.19.1间接
npm@humanfs/node0.16.7间接
npm@humanwhocodes/module-importer1.0.1间接
npm@humanwhocodes/retry0.4.3间接
npm@inquirer/external-editor1.0.3间接
npm@inquirer/figures1.0.15间接
npm@isaacs/fs-minipass4.0.1间接
npm@istanbuljs/load-nyc-config1.1.0间接
npm@istanbuljs/schema0.1.6间接
npm@jest/console30.4.1间接
npm@jest/core30.4.2间接
npm@jest/diff-sequences30.4.0间接
npm@jest/environment30.4.1间接
npm@jest/expect30.4.1间接
npm@jest/expect-utils30.4.1间接
npm@jest/fake-timers30.4.1间接
npm@jest/get-type30.1.0间接
npm@jest/globals30.4.1间接
npm@jest/pattern30.4.0间接
npm@jest/reporters30.4.1间接
npm@jest/schemas30.4.1间接
npm@jest/snapshot-utils30.4.1间接
npm@jest/source-map30.0.1间接
npm@jest/test-result30.4.1间接
npm@jest/test-sequencer30.4.1间接
npm@jest/transform30.4.1间接
npm@jest/types30.4.1间接
npm@jridgewell/gen-mapping0.3.13间接
npm@jridgewell/remapping2.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/sourcemap-codec1.5.5间接
npm@jridgewell/trace-mapping0.3.31间接
npm@json2csv/formatters7.0.6间接
npm@json2csv/plainjs7.0.6间接
npm@keyv/serialize1.1.1间接
npm@mapbox/node-pre-gyp1.0.11间接
npm@napi-rs/canvas-android-arm640.1.97间接
npm@napi-rs/canvas-darwin-arm640.1.97间接
npm@napi-rs/canvas-darwin-x640.1.97间接
npm@napi-rs/canvas-linux-arm-gnueabihf0.1.97间接
npm@napi-rs/canvas-linux-arm64-gnu0.1.53间接
npm@napi-rs/canvas-linux-arm64-gnu0.1.97间接
npm@napi-rs/canvas-linux-arm64-musl0.1.53间接
npm@napi-rs/canvas-linux-arm64-musl0.1.97间接
npm@napi-rs/canvas-linux-riscv64-gnu0.1.97间接
npm@napi-rs/canvas-linux-x64-gnu0.1.53间接
npm@napi-rs/canvas-linux-x64-gnu0.1.97间接
npm@napi-rs/canvas-linux-x64-musl0.1.53间接
npm@napi-rs/canvas-linux-x64-musl0.1.97间接
npm@napi-rs/canvas-win32-arm64-msvc0.1.97间接
npm@napi-rs/canvas-win32-x64-msvc0.1.53间接
npm@napi-rs/canvas-win32-x64-msvc0.1.97间接
npm@napi-rs/wasm-runtime1.1.5间接
npm@nodable/entities2.1.0间接
npm@opentelemetry/api1.9.1间接
npm@opentelemetry/api-logs0.214.0间接
npm@opentelemetry/core2.8.0间接
npm@opentelemetry/instrumentation0.214.0间接
npm@opentelemetry/resources2.8.0间接
npm@opentelemetry/sdk-trace-base2.8.0间接
npm@opentelemetry/semantic-conventions1.41.1间接
npm@pkgr/core0.2.9间接
npm@rtsao/scc1.1.0间接
npm@sapphire/async-queue1.5.5间接
npm@sapphire/shapeshift3.9.7间接
npm@sec-ant/readable-stream0.4.1间接
npm@sentry/core10.58.0间接
npm@sentry/node-core10.58.0间接
npm@sentry/opentelemetry10.58.0间接
npm@sentry/server-utils10.58.0间接
npm@sinclair/typebox0.34.49间接
npm@sindresorhus/is4.6.0间接
npm@sindresorhus/is5.6.0间接
npm@sindresorhus/is7.2.0间接
npm@sinonjs/commons3.0.1间接
npm@sinonjs/fake-timers15.4.0间接
npm@smithy/core3.24.3间接
npm@smithy/credential-provider-imds4.3.3间接
npm@smithy/fetch-http-handler5.4.3间接
npm@smithy/is-array-buffer2.2.0间接
npm@smithy/node-http-handler4.7.3间接
npm@smithy/signature-v45.4.3间接
npm@smithy/types4.14.2间接
npm@smithy/util-buffer-from2.2.0间接
npm@smithy/util-utf82.3.0间接
npm@so-ric/colorspace1.1.6间接
npm@streamparser/json0.0.20间接
npm@tokenizer/inflate0.4.1间接
npm@tokenizer/token0.3.0间接
npm@tybys/wasm-util0.10.2间接
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/base64-stream1.0.5间接
npm@types/content-type1.1.9间接
npm@types/eslint9.6.1间接
npm@types/eslint__js8.42.3间接
npm@types/estree1.0.8间接
npm@types/fs-extra11.0.4间接
npm@types/http-cache-semantics4.2.0间接
npm@types/inquirer9.0.9间接
npm@types/istanbul-lib-coverage2.0.6间接
npm@types/istanbul-lib-report3.0.3间接
npm@types/istanbul-reports3.0.4间接
npm@types/jest^30.0.0间接
npm@types/jsdom21.1.7间接
npm@types/json-schema7.0.15间接
npm@types/json50.0.29间接
npm@types/jsonfile6.1.4间接
npm@types/lodash4.17.24间接
npm@types/mime3.0.4间接
npm@types/mime-types2.1.4间接
npm@types/node25.5.0间接
npm@types/pluralize0.0.29间接
npm@types/safe-regex1.1.6间接
npm@types/sax1.2.7间接
npm@types/stack-utils2.0.3间接
npm@types/through0.0.33间接
npm@types/tough-cookie4.0.5间接
npm@types/triple-beam1.3.5间接
npm@types/validator13.15.10间接
npm@types/which3.0.4间接
npm@types/xml2js0.4.14间接
npm@types/yargs17.0.35间接
npm@types/yargs-parser21.0.3间接
npm@typescript-eslint/eslint-plugin8.57.1间接
npm@typescript-eslint/parser8.57.1间接
npm@typescript-eslint/project-service8.57.1间接
npm@typescript-eslint/scope-manager8.57.1间接
npm@typescript-eslint/tsconfig-utils8.57.1间接
npm@typescript-eslint/type-utils8.57.1间接
npm@typescript-eslint/types8.57.1间接
npm@typescript-eslint/typescript-estree8.57.1间接
npm@typescript-eslint/utils8.57.1间接
npm@typescript-eslint/visitor-keys8.57.1间接
npm@ungap/structured-clone1.3.1间接
npm@unrs/resolver-binding-android-arm-eabi1.12.2间接
npm@unrs/resolver-binding-android-arm641.12.2间接
npm@unrs/resolver-binding-darwin-arm641.12.2间接
npm@unrs/resolver-binding-darwin-x641.12.2间接
npm@unrs/resolver-binding-freebsd-x641.12.2间接
npm@unrs/resolver-binding-linux-arm-gnueabihf1.12.2间接
npm@unrs/resolver-binding-linux-arm-musleabihf1.12.2间接
npm@unrs/resolver-binding-linux-arm64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-arm64-musl1.12.2间接
npm@unrs/resolver-binding-linux-loong64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-loong64-musl1.12.2间接
npm@unrs/resolver-binding-linux-ppc64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-riscv64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-riscv64-musl1.12.2间接
npm@unrs/resolver-binding-linux-s390x-gnu1.12.2间接
npm@unrs/resolver-binding-linux-x64-gnu1.12.2间接
npm@unrs/resolver-binding-linux-x64-musl1.12.2间接
npm@unrs/resolver-binding-openharmony-arm641.12.2间接
npm@unrs/resolver-binding-wasm32-wasi1.12.2间接
npm@unrs/resolver-binding-win32-arm64-msvc1.12.2间接
npm@unrs/resolver-binding-win32-ia32-msvc1.12.2间接
npm@unrs/resolver-binding-win32-x64-msvc1.12.2间接
npm@vladfrangu/async_event_emitter2.4.7间接
npmabbrev1.1.1间接
npmabort-controller3.0.0间接
npmacorn8.16.0间接
npmacorn-import-attributes1.9.5间接
npmacorn-jsx5.3.2间接
npmadm-zip0.6.0间接
npmagent-base6.0.2间接
npmagent-base7.1.4间接
npmajv6.14.0间接
npmansi-colors4.1.3间接
npmansi-escapes4.3.2间接
npmansi-regex5.0.1间接
npmansi-styles2.2.1间接
npmansi-styles4.3.0间接
npmansi-styles5.2.0间接
npmanymatch3.1.3间接
npmaproba2.1.0间接
npmare-we-there-yet2.0.0间接
npmargparse2.0.1间接
npmarray-buffer-byte-length1.0.2间接
npmarray-includes3.1.9间接
npmarray.prototype.findlastindex1.2.6间接
npmarray.prototype.flat1.3.3间接
npmarray.prototype.flatmap1.3.3间接
npmarraybuffer.prototype.slice1.0.4间接
npmasync3.2.6间接
npmasync-function1.0.0间接
npmasynckit0.4.0间接
npmavailable-typed-arrays1.0.7间接
npmbabel-jest30.4.1间接
npmbabel-plugin-istanbul7.0.1间接
npmbabel-plugin-jest-hoist30.4.0间接
npmbabel-preset-current-node-syntax1.2.0间接
npmbabel-preset-jest30.4.0间接
npmbalanced-match4.0.4间接
npmbase64-js1.5.1间接
npmbaseline-browser-mapping2.10.8间接
npmbidi-js1.0.3间接
npmbl4.1.0间接
npmboolbase1.0.0间接
npmbowser2.14.1间接
npmbrace-expansion5.0.8间接
npmbrowserify-zlib0.2.0间接
npmbrowserslist4.28.1间接
npmbser2.1.1间接
npmbuffer5.7.1间接
npmbuffer6.0.3间接
npmbuffer-from1.1.2间接
npmbyte-counter0.1.0间接
npmcacheable-lookup7.0.0间接
npmcacheable-request13.0.19间接
npmcall-bind1.0.8间接
npmcall-bind-apply-helpers1.0.2间接
npmcall-bound1.0.4间接
npmcallsites3.1.0间接
npmcallsites4.2.0间接
npmcamelcase5.3.1间接
npmcamelcase6.3.0间接
npmcaniuse-lite1.0.30001780间接
npmcanvas2.11.2间接
npmchalk1.1.3间接
npmchalk4.1.2间接
npmchar-regex1.0.2间接
npmchardet2.1.1间接
npmcheerio-select2.1.0间接
npmchownr3.0.0间接
npmci-info4.4.0间接
npmcjs-module-lexer2.2.0间接
npmcli-cursor3.1.0间接
npmcli-spinners2.9.2间接
npmcli-width3.0.0间接
npmcli-width4.1.0间接
npmcliui8.0.1间接
npmclone1.0.4间接
npmco4.6.0间接
npmcollect-v8-coverage1.0.3间接
npmcolor5.0.3间接
npmcolor-convert2.0.1间接
npmcolor-convert3.1.3间接
npmcolor-name1.1.4间接
npmcolor-name2.1.0间接
npmcolor-string2.1.4间接
npmcolor-support1.1.3间接
npmcombined-stream1.0.8间接
npmcommander14.0.3间接
npmconfusing-browser-globals1.0.11间接
npmconsole-control-strings1.1.0间接
npmcontent-type1.0.5间接
npmconvert-source-map2.0.0间接
npmcore-util-is1.0.3间接
npmcross-spawn7.0.6间接
npmcss-select5.2.2间接
npmcss-tree3.2.1间接
npmcss-what6.2.2间接
npmcssom0.5.0间接
npmcssstyle4.6.0间接
npmcsv-stringify6.8.1间接
npmcypress^13.0.0间接
npmcypress^15.3.0间接
npmdata-urls5.0.0间接
npmdata-urls7.0.0间接
npmdata-view-buffer1.0.2间接
npmdata-view-byte-length1.0.2间接
npmdata-view-byte-offset1.0.1间接
npmdebug3.2.7间接
npmdebug4.4.3间接
npmdecimal.js10.6.0间接
npmdecompress-response10.0.0间接
npmdecompress-response4.2.1间接
npmdedent1.7.2间接
npmdeep-is0.1.4间接
npmdeepmerge4.3.1间接
npmdefaults1.0.4间接
npmdefine-data-property1.1.4间接
npmdefine-properties1.2.1间接
npmdelayed-stream1.0.0间接
npmdelegates1.0.0间接
npmdetect-libc2.1.2间接
npmdetect-newline3.1.0间接
npmdevtools-protocol0.0.1656784间接
npmdoctrine2.1.0间接
npmdom-serializer2.0.0间接
npmdomelementtype2.3.0间接
npmdomhandler5.0.3间接
npmdomutils3.2.2间接
npmdot-prop6.0.1间接
npmdot-prop7.2.0间接
npmdunder-proto1.0.1间接
npmduplexer0.1.2间接
npmelectron-to-chromium1.5.321间接
npmemittery0.13.1间接
npmemoji-regex8.0.0间接
npmenabled2.0.0间接
npmencoding-sniffer0.2.1间接
npmentities4.5.0间接
npmentities6.0.1间接
npmentities7.0.1间接
npmerror-ex1.3.4间接
npmes-abstract1.24.1间接
npmes-define-property1.0.1间接
npmes-errors1.3.0间接
npmes-object-atoms1.1.1间接
npmes-set-tostringtag2.1.0间接
npmes-shim-unscopables1.1.0间接
npmes-to-primitive1.3.0间接
npmescalade3.2.0间接
npmescape-string-regexp1.0.5间接
npmescape-string-regexp2.0.0间接
npmescape-string-regexp4.0.0间接
npmeslint9.39.4间接
npmeslint-config-airbnb-base15.0.0间接
npmeslint-config-prettier8.10.2间接
npmeslint-import-resolver-node0.3.9间接
npmeslint-module-utils2.12.1间接
npmeslint-plugin-import2.32.0间接
npmeslint-plugin-prettier5.5.5间接
npmeslint-scope8.4.0间接
npmeslint-visitor-keys3.4.3间接
npmeslint-visitor-keys4.2.1间接
npmeslint-visitor-keys5.0.1间接
npmespree10.4.0间接
npmesquery1.7.0间接
npmesrecurse4.3.0间接
npmestraverse5.3.0间接
npmesutils2.0.3间接
npmevent-stream3.3.4间接
npmevent-target-shim5.0.1间接
npmevents3.3.0间接
npmexeca5.1.1间接
npmexit-x0.2.2间接
npmexpect30.4.1间接
npmfast-deep-equal3.1.3间接
npmfast-diff1.3.0间接
npmfast-json-stable-stringify2.1.0间接
npmfast-levenshtein2.0.6间接
npmfast-xml-builder1.2.0间接
npmfast-xml-parser5.8.0间接
npmfb-watchman2.0.2间接
npmfdir6.5.0间接
npmfecha4.2.3间接
npmfiglet1.11.0间接
npmfigures3.2.0间接
npmfile-entry-cache8.0.0间接
npmfilelist1.0.6间接
npmfind-up4.1.0间接
npmfind-up5.0.0间接
npmfingerprint-generator2.1.82间接
npmfingerprint-injector2.1.82间接
npmflat-cache4.0.1间接
npmflatted3.4.2间接
npmfn.name1.1.0间接
npmfollow-redirects1.16.0间接
npmfor-each0.3.5间接
npmform-data4.0.6间接
npmform-data-encoder4.1.0间接
npmfrom0.1.7间接
npmfsevents2.3.2间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmfunction.prototype.name1.1.8间接
npmfunctions-have-names1.2.3间接
npmgauge3.0.2间接
npmgenerative-bayesian-network2.1.83间接
npmgenerator-function2.0.1间接
npmgensync1.0.0-beta.2间接
npmget-caller-file2.0.5间接
npmget-intrinsic1.3.0间接
npmget-package-type0.1.0间接
npmget-proto1.0.1间接
npmget-stream6.0.1间接
npmget-stream9.0.1间接
npmget-symbol-description1.1.0间接
npmglob-parent6.0.2间接
npmglobals14.0.0间接
npmglobals15.15.0间接
npmglobalthis1.0.4间接
npmgopd1.2.0间接
npmgot14.6.6间接
npmgot-scraping4.2.1间接
npmgraceful-fs4.2.11间接
npmhas-ansi2.0.0间接
npmhas-bigints1.1.0间接
npmhas-flag4.0.0间接
npmhas-property-descriptors1.0.2间接
npmhas-proto1.2.0间接
npmhas-symbols1.1.0间接
npmhas-tostringtag1.0.2间接
npmhas-unicode2.0.1间接
npmhasown2.0.2间接
npmhasown2.0.4间接
npmheader-generator2.1.82间接
npmhtml-encoding-sniffer4.0.0间接
npmhtml-encoding-sniffer6.0.0间接
npmhtml-escaper2.0.2间接
npmhtml-escaper3.0.3间接
npmhtmlparser210.1.0间接
npmhtmlparser28.0.2间接
npmhtmlparser29.1.0间接
npmhttp-cache-semantics4.2.0间接
npmhttp-proxy-agent7.0.2间接
npmhttp2-wrapper2.2.1间接
npmhttps-proxy-agent5.0.1间接
npmhttps-proxy-agent7.0.6间接
npmhuman-signals2.1.0间接
npmiconv-lite0.6.3间接
npmiconv-lite0.7.2间接
npmidcac-playwright0.2.0间接
npmieee7541.2.1间接
npmignore5.3.2间接
npmignore7.0.5间接
npmimmediate3.0.6间接
npmimport-fresh3.3.1间接
npmimport-in-the-middle3.0.2间接
npmimport-local3.2.0间接
npmimurmurhash0.1.4间接
npminherits2.0.4间接
npminternal-slot1.1.0间接
npmip-address10.2.0间接
npmis-any-array3.0.0间接
npmis-array-buffer3.0.5间接
npmis-arrayish0.2.1间接
npmis-async-function2.1.1间接
npmis-bigint1.1.0间接
npmis-boolean-object1.2.2间接
npmis-callable1.2.7间接
npmis-core-module2.16.1间接
npmis-data-view1.0.2间接
npmis-date-object1.1.0间接
npmis-extglob2.1.1间接
npmis-finalizationregistry1.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-generator-fn2.1.0间接
npmis-generator-function1.1.2间接
npmis-glob4.0.3间接
npmis-interactive1.0.0间接
npmis-map2.0.3间接
npmis-negative-zero2.0.3间接
npmis-number-object1.1.1间接
npmis-obj2.0.0间接
npmis-potential-custom-element-name1.0.1间接
npmis-regex1.2.1间接
npmis-set2.0.3间接
npmis-shared-array-buffer1.0.4间接
npmis-stream2.0.1间接
npmis-stream4.0.1间接
npmis-string1.1.1间接
npmis-symbol1.1.1间接
npmis-typed-array1.1.15间接
npmis-unicode-supported0.1.0间接
npmis-weakmap2.0.2间接
npmis-weakref1.1.1间接
npmis-weakset2.0.4间接
npmisarray1.0.0间接
npmisarray2.0.5间接
npmisexe2.0.0间接
npmisexe3.1.5间接
npmistanbul-lib-coverage3.2.2间接
npmistanbul-lib-instrument6.0.3间接
npmistanbul-lib-report3.0.1间接
npmistanbul-lib-source-maps5.0.6间接
npmistanbul-reports3.2.0间接
npmjake10.9.4间接
npmjest30.4.2间接
npmjest-changed-files30.4.1间接
npmjest-circus30.4.2间接
npmjest-cli30.4.2间接
npmjest-config30.4.2间接
npmjest-diff30.4.1间接
npmjest-docblock30.4.0间接
npmjest-each30.4.1间接
npmjest-environment-node30.4.1间接
npmjest-haste-map30.4.1间接
npmjest-leak-detector30.4.1间接
npmjest-matcher-utils30.4.1间接
npmjest-message-util30.4.1间接
npmjest-mock30.4.1间接
npmjest-pnp-resolver1.2.3间接
npmjest-regex-util30.4.0间接
npmjest-resolve30.4.1间接
npmjest-resolve-dependencies30.4.2间接
npmjest-runner30.4.2间接
npmjest-runtime30.4.2间接
npmjest-snapshot30.4.1间接
npmjest-util30.4.1间接
npmjest-validate30.4.1间接
npmjest-watcher30.4.1间接
npmjest-worker30.4.1间接
npmjquery3.7.1间接
npmjs-tokens4.0.0间接
npmjs-yaml4.3.0间接
npmjsesc3.1.0间接
npmjson-buffer3.0.1间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-schema-traverse0.4.1间接
npmjson-stable-stringify-without-jsonify1.0.1间接
npmjson52.2.3间接
npmjsonfile6.2.0间接
npmkeyv4.5.4间接
npmkeyv5.6.0间接
npmkleur3.0.3间接
npmkuler2.0.0间接
npmleven3.1.0间接
npmlevn0.4.1间接
npmlie3.3.0间接
npmlines-and-columns1.2.4间接
npmlinkedom0.18.12间接
npmlocate-path5.0.0间接
npmlocate-path6.0.0间接
npmlodash.isequal4.5.0间接
npmlodash.merge4.6.2间接
npmlog-symbols4.1.0间接
npmlogform2.7.0间接
npmlowercase-keys3.0.0间接
npmlru-cache10.4.3间接
npmlru-cache11.2.7间接
npmlru-cache5.1.1间接
npmmake-dir3.1.0间接
npmmake-dir4.0.0间接
npmmakeerror1.0.12间接
npmmap-stream0.1.0间接
npmmath-intrinsics1.1.0间接
npmmdn-data2.27.1间接
npmmerge-stream2.0.0间接
npmmime-db1.52.0间接
npmmimic-fn2.1.0间接
npmmimic-response2.1.0间接
npmmimic-response4.0.0间接
npmminimist1.2.8间接
npmminipass7.1.3间接
npmminizlib3.1.0间接
npmml-array-max2.0.0间接
npmml-array-min2.0.0间接
npmml-array-rescale2.0.0间接
npmml-logistic-regression2.0.0间接
npmml-matrix6.13.0间接
npmmodule-details-from-path1.0.4间接
npmms2.1.3间接
npmmute-stream0.0.8间接
npmmute-stream1.0.0间接
npmnan2.26.1间接
npmnanoid3.3.15间接
npmnapi-postinstall0.3.4间接
npmnatural-compare1.4.0间接
npmnode-fetch2.7.0间接
npmnode-int640.4.0间接
npmnode-releases2.0.36间接
npmnopt5.0.0间接
npmnormalize-path3.0.0间接
npmnormalize-strings1.1.1间接
npmnormalize-url8.1.1间接
npmnpm-run-path4.0.1间接
npmnpmlog5.0.1间接
npmnth-check2.1.1间接
npmnwsapi2.2.24间接
npmobject-assign4.1.1间接
npmobject-inspect1.13.4间接
npmobject-keys1.1.1间接
npmobject.assign4.1.7间接
npmobject.entries1.1.9间接
npmobject.fromentries2.0.8间接
npmobject.groupby1.0.3间接
npmobject.values1.2.1间接
npmonce1.4.0间接
npmone-time1.0.0间接
npmonetime5.1.2间接
npmoptionator0.9.4间接
npmora5.4.1间接
npmow0.28.2间接
npmow1.1.1间接
npmown-keys1.0.1间接
npmp-cancelable4.0.1间接
npmp-limit2.3.0间接
npmp-limit3.1.0间接
npmp-locate4.1.0间接
npmp-locate5.0.0间接
npmp-try2.2.0间接
npmpako1.0.11间接
npmparent-module1.0.1间接
npmparent-require1.0.0间接
npmparse-json5.2.0间接
npmparse57.3.0间接
npmparse58.0.0间接
npmparse5-htmlparser2-tree-adapter7.1.0间接
npmparse5-parser-stream7.1.2间接
npmpath-exists4.0.0间接
npmpath-expression-matcher1.5.0间接
npmpath-key3.1.1间接
npmpath-parse1.0.7间接
npmpath-scurry2.0.2间接
npmpath2d0.2.2间接
npmpause-stream0.0.11间接
npmpicocolors1.1.1间接
npmpicomatch2.3.2间接
npmpicomatch4.0.4间接
npmpirates4.0.7间接
npmpkg-dir4.2.0间接
npmplaywright-core1.61.1间接
npmpluralize8.0.0间接
npmpossible-typed-array-names1.1.0间接
npmprelude-ls1.2.1间接
npmprettier-linter-helpers1.0.1间接
npmpretty-format30.4.1间接
npmprocess0.11.10间接
npmprocess-nextick-args2.0.1间接
npmproper-lockfile4.1.2间接
npmproxy-chain2.7.1间接
npmproxy-from-env2.1.0间接
npmpunycode1.4.1间接
npmpunycode2.3.1间接
npmpure-rand7.0.1间接
npmqs6.15.2间接
npmquick-lru5.1.1间接
npmquick-lru7.3.0间接
npmreact-is18.3.1间接
npmreact-is19.2.7间接
npmreadable-stream2.3.8间接
npmreadable-stream3.6.2间接
npmreadable-stream4.7.0间接
npmreflect.getprototypeof1.0.10间接
npmregexp-tree0.1.27间接
npmregexp.prototype.flags1.5.4间接
npmrequire-directory2.1.1间接
npmrequire-from-string2.0.2间接
npmrequire-in-the-middle8.0.1间接
npmresolve1.22.11间接
npmresolve-alpn1.2.1间接
npmresolve-cwd3.0.0间接
npmresolve-from4.0.0间接
npmresolve-from5.0.0间接
npmresponselike4.0.2间接
npmrestore-cursor3.1.0间接
npmretry0.12.0间接
npmrimraf3.0.2间接
npmrobots-parser3.0.1间接
npmrrweb-cssom0.8.0间接
npmrun-async2.4.1间接
npmrun-async3.0.0间接
npmrxjs7.8.2间接
npmsafe-array-concat1.1.3间接
npmsafe-buffer5.1.2间接
npmsafe-buffer5.2.1间接
npmsafe-push-apply1.0.0间接
npmsafe-regex-test1.1.0间接
npmsafe-stable-stringify2.5.0间接
npmsafer-buffer2.1.2间接
npmsax1.6.0间接
npmsaxes6.0.0间接
npmsemver6.3.1间接
npmsemver7.7.4间接
npmset-blocking2.0.0间接
npmset-function-length1.2.2间接
npmset-function-name2.0.2间接
npmset-proto1.0.0间接
npmsetimmediate1.0.5间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmside-channel1.1.0间接
npmside-channel-list1.0.0间接
npmside-channel-map1.0.1间接
npmside-channel-weakmap1.0.2间接
npmsignal-exit3.0.7间接
npmsignal-exit4.1.0间接
npmsimple-concat1.0.1间接
npmsimple-get3.1.1间接
npmslash3.0.0间接
npmsmart-buffer4.2.0间接
npmsocks2.8.9间接
npmsocks-proxy-agent8.0.5间接
npmsource-map0.6.1间接
npmsource-map-js1.2.1间接
npmsource-map-support0.5.13间接
npmsplit0.3.3间接
npmstack-trace0.0.10间接
npmstack-utils2.0.6间接
npmstop-iteration-iterator1.1.0间接
npmstream-chain2.2.5间接
npmstream-combiner0.0.4间接
npmstream-json1.9.1间接
npmstring-comparison1.3.0间接
npmstring-length4.0.2间接
npmstring-width4.2.3间接
npmstring.prototype.trim1.2.10间接
npmstring.prototype.trimend1.0.9间接
npmstring.prototype.trimstart1.0.8间接
npmstring_decoder1.1.1间接
npmstring_decoder1.3.0间接
npmstrip-ansi3.0.1间接
npmstrip-ansi6.0.1间接
npmstrip-bom3.0.0间接
npmstrip-bom4.0.0间接
npmstrip-final-newline2.0.0间接
npmstrip-json-comments3.1.1间接
npmstrnum2.3.0间接
npmstrtok310.3.4间接
npmsupports-color2.0.0间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmsyllable5.0.1间接
npmsymbol-tree3.2.4间接
npmsynckit0.11.12间接
npmtar7.5.22间接
npmtest-exclude6.0.0间接
npmtext-hex1.0.0间接
npmthrough2.3.8间接
npmtiny-typed-emitter2.1.0间接
npmtinyglobby0.2.15间接
npmtldts-core6.1.86间接
npmtldts-core7.0.27间接
npmtmpl1.0.5间接
npmtoken-types6.1.2间接
npmtough-cookie5.1.2间接
npmtr460.0.3间接
npmtr465.1.1间接
npmtr466.0.0间接
npmtriple-beam1.4.1间接
npmts-api-utils2.4.0间接
npmtsconfig-paths3.15.0间接
npmtslib2.8.1间接
npmtype-check0.4.0间接
npmtype-detect4.0.8间接
npmtype-fest0.21.3间接
npmtype-fest2.19.0间接
npmtype-fest4.41.0间接
npmtyped-array-buffer1.0.3间接
npmtyped-array-byte-length1.0.3间接
npmtyped-array-byte-offset1.0.4间接
npmtyped-array-length1.0.7间接
npmtypescript-eslint8.57.1间接
npmuhyphen0.2.0间接
npmuint8array-extras1.5.0间接
npmunbox-primitive1.1.0间接
npmundici7.28.0间接
npmundici-types7.18.2间接
npmuniversalify2.0.1间接
npmunrs-resolver1.12.2间接
npmupdate-browserslist-db1.2.3间接
npmuri-js4.4.1间接
npmutil-deprecate1.0.2间接
npmv8-to-istanbul9.3.0间接
npmvali-date1.0.0间接
npmw3c-xmlserializer5.0.0间接
npmwalker1.0.8间接
npmwcwidth1.0.1间接
npmwebidl-conversions3.0.1间接
npmwebidl-conversions7.0.0间接
npmwebidl-conversions8.0.1间接
npmwhatwg-encoding3.1.1间接
npmwhatwg-mimetype4.0.0间接
npmwhatwg-mimetype5.0.0间接
npmwhatwg-url14.2.0间接
npmwhatwg-url16.0.1间接
npmwhatwg-url5.0.0间接
npmwhich-boxed-primitive1.1.1间接
npmwhich-builtin-type1.2.1间接
npmwhich-collection1.0.2间接
npmwhich-typed-array1.1.20间接
npmwide-align1.1.5间接
npmwinston-transport4.9.0间接
npmword-wrap1.2.5间接
npmwrap-ansi6.2.0间接
npmwrap-ansi7.0.0间接
npmwrappy1.0.2间接
npmwrite-file-atomic5.0.1间接
npmxml-name-validator5.0.0间接
npmxml-naming0.1.0间接
npmxmlbuilder11.0.1间接
npmxmlchars2.2.0间接
npmy18n5.0.8间接
npmyallist3.1.1间接
npmyallist5.0.0间接
npmyargonaut1.1.4间接
npmyargs-parser21.1.1间接
npmyocto-queue0.1.0间接
npmyoctocolors-cjs2.1.3间接
依赖安全公告 0

安装 npm:@govtechsg/oobee@0.11.3 会引入 500 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 165825,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "EJS": 18636434,
        "HTML": 71192,
        "Shell": 5140,
        "Mustache": 96141,
        "Batchfile": 942,
        "Dockerfile": 3535,
        "JavaScript": 1474657,
        "PowerShell": 5157,
        "TypeScript": 873988
      },
      "pushed_at": "2026-07-31T05:47:13Z",
      "created_at": "2020-06-25T09:57:44Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-31T05:47:28Z",
      "description": "Oobee (formerly known as Purple A11y) is a customisable, automated web accessibility testing tool that allows software development teams to find and fix accessibility problems to improve persons with disabilities (PWDs) access to digital services.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "EJS",
      "significant_languages": [
        "EJS"
      ]
    },
    "owner": {
      "blog": "https://www.tech.gov.sg/",
      "name": "Government Technology Agency of Singapore (GovTech Singapore)",
      "type": "Organization",
      "login": "GovTechSG",
      "company": null,
      "location": "Singapore",
      "followers": 312,
      "avatar_url": "https://avatars.githubusercontent.com/u/12439141?v=4",
      "created_at": "2015-05-14T03:32:23Z",
      "is_verified": null,
      "public_repos": 171,
      "account_age_days": 4097
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "0.11.6",
          "kind": "patch",
          "published_at": "2026-07-31T03:50:31Z"
        },
        {
          "tag": "0.11.5",
          "kind": "patch",
          "published_at": "2026-07-24T09:53:36Z"
        },
        {
          "tag": "0.11.1",
          "kind": "patch",
          "published_at": "2026-07-13T11:40:07Z"
        },
        {
          "tag": "0.10.97",
          "kind": "patch",
          "published_at": "2026-07-07T08:28:42Z"
        },
        {
          "tag": "0.10.94",
          "kind": "patch",
          "published_at": "2026-06-18T08:32:43Z"
        },
        {
          "tag": "0.10.91",
          "kind": "patch",
          "published_at": "2026-06-05T11:47:08Z"
        },
        {
          "tag": "0.10.89",
          "kind": "patch",
          "published_at": "2026-05-28T15:21:37Z"
        },
        {
          "tag": "0.10.87",
          "kind": "patch",
          "published_at": "2026-05-21T05:38:02Z"
        },
        {
          "tag": "0.10.86",
          "kind": "patch",
          "published_at": "2026-04-21T06:47:33Z"
        },
        {
          "tag": "0.10.85",
          "kind": "patch",
          "published_at": "2026-03-25T07:36:56Z"
        },
        {
          "tag": "0.10.84",
          "kind": "patch",
          "published_at": "2026-03-18T09:27:48Z"
        },
        {
          "tag": "0.10.83",
          "kind": "patch",
          "published_at": "2026-03-05T06:34:14Z"
        },
        {
          "tag": "0.10.77",
          "kind": "patch",
          "published_at": "2026-02-03T10:01:51Z"
        },
        {
          "tag": "0.10.76",
          "kind": "patch",
          "published_at": "2026-01-27T11:43:18Z"
        },
        {
          "tag": "0.10.74",
          "kind": "patch",
          "published_at": "2026-01-21T10:17:39Z"
        },
        {
          "tag": "0.10.72",
          "kind": "patch",
          "published_at": "2026-01-09T08:58:30Z"
        },
        {
          "tag": "0.10.70",
          "kind": "patch",
          "published_at": "2025-10-15T07:35:13Z"
        },
        {
          "tag": "0.10.69",
          "kind": "patch",
          "published_at": "2025-10-13T06:16:07Z"
        },
        {
          "tag": "0.10.68",
          "kind": "patch",
          "published_at": "2025-09-16T14:15:12Z"
        },
        {
          "tag": "0.10.67",
          "kind": "patch",
          "published_at": "2025-09-16T08:03:27Z"
        },
        {
          "tag": "0.10.65",
          "kind": "patch",
          "published_at": "2025-08-20T10:24:35Z"
        },
        {
          "tag": "0.10.63",
          "kind": "patch",
          "published_at": "2025-08-12T03:57:30Z"
        },
        {
          "tag": "0.10.61",
          "kind": "patch",
          "published_at": "2025-08-04T12:30:12Z"
        },
        {
          "tag": "0.10.58",
          "kind": "patch",
          "published_at": "2025-07-22T12:30:00Z"
        },
        {
          "tag": "0.10.57",
          "kind": "patch",
          "published_at": "2025-07-21T10:29:34Z"
        },
        {
          "tag": "0.10.51",
          "kind": "patch",
          "published_at": "2025-06-05T10:34:51Z"
        },
        {
          "tag": "0.10.50",
          "kind": "patch",
          "published_at": "2025-05-22T09:18:49Z"
        },
        {
          "tag": "0.10.49",
          "kind": "patch",
          "published_at": "2025-05-19T16:31:28Z"
        },
        {
          "tag": "0.10.45",
          "kind": "patch",
          "published_at": "2025-05-13T13:14:20Z"
        },
        {
          "tag": "0.10.42",
          "kind": "patch",
          "published_at": "2025-04-22T04:06:38Z"
        },
        {
          "tag": "0.10.39",
          "kind": "patch",
          "published_at": "2025-03-14T08:05:38Z"
        },
        {
          "tag": "0.10.36",
          "kind": "patch",
          "published_at": "2025-02-28T11:37:30Z"
        },
        {
          "tag": "0.10.34",
          "kind": "patch",
          "published_at": "2025-02-21T06:16:45Z"
        },
        {
          "tag": "0.10.33",
          "kind": "patch",
          "published_at": "2025-02-18T02:19:32Z"
        },
        {
          "tag": "0.10.28",
          "kind": "patch",
          "published_at": "2025-02-07T09:59:33Z"
        },
        {
          "tag": "0.10.27",
          "kind": "patch",
          "published_at": "2025-02-05T15:40:36Z"
        },
        {
          "tag": "0.10.25",
          "kind": "patch",
          "published_at": "2025-01-24T15:03:11Z"
        },
        {
          "tag": "0.10.24",
          "kind": "patch",
          "published_at": "2025-01-17T13:30:45Z"
        },
        {
          "tag": "0.10.21",
          "kind": "patch",
          "published_at": "2024-12-30T02:31:31Z"
        },
        {
          "tag": "0.10.20",
          "kind": "patch",
          "published_at": "2024-12-10T06:12:41Z"
        },
        {
          "tag": "0.10.18",
          "kind": "patch",
          "published_at": "2024-11-13T08:49:44Z"
        },
        {
          "tag": "0.10.17",
          "kind": "patch",
          "published_at": "2024-10-25T03:38:01Z"
        },
        {
          "tag": "0.10.16",
          "kind": "patch",
          "published_at": "2024-10-14T09:53:09Z"
        },
        {
          "tag": "0.10.15",
          "kind": "patch",
          "published_at": "2024-09-11T05:01:49Z"
        },
        {
          "tag": "0.10.14",
          "kind": "patch",
          "published_at": "2024-08-30T13:36:32Z"
        },
        {
          "tag": "0.10.10",
          "kind": "patch",
          "published_at": "2024-08-22T12:15:35Z"
        },
        {
          "tag": "0.10.7",
          "kind": "patch",
          "published_at": "2024-07-16T05:34:13Z"
        },
        {
          "tag": "0.10.5",
          "kind": "patch",
          "published_at": "2024-06-21T09:27:17Z"
        },
        {
          "tag": "0.10.4",
          "kind": "patch",
          "published_at": "2024-06-20T09:02:42Z"
        },
        {
          "tag": "0.10.2",
          "kind": "patch",
          "published_at": "2024-06-19T10:43:07Z"
        },
        {
          "tag": "0.10.1",
          "kind": "patch",
          "published_at": "2024-06-14T08:20:22Z"
        },
        {
          "tag": "0.10.0",
          "kind": "minor",
          "published_at": "2024-06-06T12:11:04Z"
        },
        {
          "tag": "0.9.59",
          "kind": "patch",
          "published_at": "2024-05-26T04:19:09Z"
        },
        {
          "tag": "0.9.54",
          "kind": "patch",
          "published_at": "2024-05-22T14:12:56Z"
        },
        {
          "tag": "cache",
          "kind": "other",
          "published_at": "2024-05-22T13:58:44Z"
        },
        {
          "tag": "0.9.52",
          "kind": "patch",
          "published_at": "2024-05-13T09:24:51Z"
        },
        {
          "tag": "0.9.51",
          "kind": "patch",
          "published_at": "2024-05-08T10:47:07Z"
        },
        {
          "tag": "0.9.50",
          "kind": "patch",
          "published_at": "2024-04-26T09:49:29Z"
        },
        {
          "tag": "0.9.48",
          "kind": "patch",
          "published_at": "2024-04-02T07:00:34Z"
        },
        {
          "tag": "0.9.47",
          "kind": "patch",
          "published_at": "2024-03-15T07:14:34Z"
        },
        {
          "tag": "0.9.46",
          "kind": "patch",
          "published_at": "2024-02-26T14:50:08Z"
        },
        {
          "tag": "0.9.45",
          "kind": "patch",
          "published_at": "2024-02-07T10:06:33Z"
        },
        {
          "tag": "0.9.43",
          "kind": "patch",
          "published_at": "2024-01-22T03:02:39Z"
        },
        {
          "tag": "0.9.41",
          "kind": "patch",
          "published_at": "2024-01-03T06:51:43Z"
        },
        {
          "tag": "0.9.40",
          "kind": "patch",
          "published_at": "2023-12-14T07:30:05Z"
        },
        {
          "tag": "0.9.39",
          "kind": "patch",
          "published_at": "2023-12-08T08:35:04Z"
        },
        {
          "tag": "0.9.36",
          "kind": "patch",
          "published_at": "2023-12-04T09:46:23Z"
        },
        {
          "tag": "0.9.35",
          "kind": "patch",
          "published_at": "2023-12-01T07:00:07Z"
        },
        {
          "tag": "0.9.34",
          "kind": "patch",
          "published_at": "2023-11-21T10:01:55Z"
        },
        {
          "tag": "0.9.33",
          "kind": "patch",
          "published_at": "2023-11-20T06:36:11Z"
        },
        {
          "tag": "0.9.32",
          "kind": "patch",
          "published_at": "2023-11-06T09:58:14Z"
        },
        {
          "tag": "0.9.31",
          "kind": "patch",
          "published_at": "2023-11-03T11:45:15Z"
        },
        {
          "tag": "0.9.26",
          "kind": "patch",
          "published_at": "2023-10-19T09:46:41Z"
        },
        {
          "tag": "0.9.25",
          "kind": "patch",
          "published_at": "2023-10-06T08:46:33Z"
        },
        {
          "tag": "0.9.19",
          "kind": "patch",
          "published_at": "2023-09-21T10:08:11Z"
        },
        {
          "tag": "0.9.17",
          "kind": "patch",
          "published_at": "2023-09-08T09:09:22Z"
        },
        {
          "tag": "0.9.14",
          "kind": "patch",
          "published_at": "2023-08-31T08:28:21Z"
        },
        {
          "tag": "0.9.13",
          "kind": "patch",
          "published_at": "2023-08-24T09:43:36Z"
        },
        {
          "tag": "0.9.7",
          "kind": "patch",
          "published_at": "2023-08-15T02:44:25Z"
        },
        {
          "tag": "0.9.4",
          "kind": "patch",
          "published_at": "2023-07-21T11:25:47Z"
        },
        {
          "tag": "0.9.3",
          "kind": "patch",
          "published_at": "2023-07-18T08:34:45Z"
        },
        {
          "tag": "0.9.2",
          "kind": "patch",
          "published_at": "2023-07-14T09:34:44Z"
        },
        {
          "tag": "0.9.1",
          "kind": "patch",
          "published_at": "2023-07-05T00:46:16Z"
        },
        {
          "tag": "0.9.0",
          "kind": "minor",
          "published_at": "2023-06-30T04:21:42Z"
        },
        {
          "tag": "0.0.15",
          "kind": "patch",
          "published_at": "2023-05-24T09:08:11Z"
        },
        {
          "tag": "0.0.14",
          "kind": "patch",
          "published_at": "2023-05-13T10:17:59Z"
        },
        {
          "tag": "0.0.13",
          "kind": "patch",
          "published_at": "2023-05-04T10:43:57Z"
        },
        {
          "tag": "0.0.12",
          "kind": "patch",
          "published_at": "2023-05-02T10:39:31Z"
        },
        {
          "tag": "0.0.11",
          "kind": "patch",
          "published_at": "2023-04-14T15:44:53Z"
        },
        {
          "tag": "0.0.10",
          "kind": "patch",
          "published_at": "2023-04-13T04:07:24Z"
        },
        {
          "tag": "0.0.9",
          "kind": "patch",
          "published_at": "2023-04-04T11:34:49Z"
        },
        {
          "tag": "0.0.8",
          "kind": "patch",
          "published_at": "2023-03-30T10:13:53Z"
        },
        {
          "tag": "0.0.7",
          "kind": "patch",
          "published_at": "2023-03-18T09:40:03Z"
        },
        {
          "tag": "0.0.6",
          "kind": "patch",
          "published_at": "2023-03-15T07:28:24Z"
        },
        {
          "tag": "0.0.5",
          "kind": "patch",
          "published_at": "2023-02-10T14:44:45Z"
        },
        {
          "tag": "0.0.4",
          "kind": "patch",
          "published_at": "2023-01-17T14:48:36Z"
        },
        {
          "tag": "0.0.3",
          "kind": "patch",
          "published_at": "2022-12-19T16:10:47Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2020-10-20T08:38:06Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "0034173737a089071aa1b8ac77c37ffb4cf5ac43",
          "body": "Refactor GitHub Actions workflow to support multi-architecture builds and digest uploads.",
          "is_bot": false,
          "headline": "Enhance docker-push-ghcr workflow for multi-arch support",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T05:47:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f431f24fe331fd81823609f6a3de55adf287acc",
          "body": null,
          "is_bot": false,
          "headline": "Disable cache for Docker push in GitHub Actions",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T03:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c8bd196226638704415e80ca2a5e6e8e9d431a0",
          "body": "…(#808)\n\nFollow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires aft\n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:25:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a825ef645c86a29417bbd0e9bbf9af9f4baeb04d",
          "body": "…(#807)\n\nFollow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires aft\n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:22:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "918321d2d588c30bd2988e0031926b14fbaad125",
          "body": "…ed runs\"\n\nThis reverts commit e12dc7dc531a7922c9bc9c1eecee3e1e58c12354.",
          "is_bot": false,
          "headline": "Revert \"fix(crawler): harden waitForPageLoaded for Docker/CPU-contend…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-31T00:21:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e12dc7dc531a7922c9bc9c1eecee3e1e58c12354",
          "body": "Follow-up to #803. After landing the stacked load + stability phases,\none intermittent aria-required-children finding still surfaced in 1 of\n~3700 pages scanned in Docker. Three root causes:\n\n1. `networkidle` was racing the mutation observer in Phase 2 and\n   winning too early. It fires after 500ms \n[…]\ns at the env vars) and debug-log the resolution\nreason on the normal path (so future rare misses are greppable\nwithout another 3700-URL sweep).\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): harden waitForPageLoaded for Docker/CPU-contended runs",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T12:47:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "97fb69d35a9eab20b3ee89b451ca8071346a9665",
          "body": null,
          "is_bot": false,
          "headline": "Bump package version",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:20:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "647d3e9fbb417f98e99c61a3f61544926869a423",
          "body": "* feat: route Chromium via Cloudflare Worker SOCKS5 tunnel\n\nAdds cfProxyWorker that spins up a local SOCKS5 server tunneling each\nconnection to a Cloudflare Worker over WebSocket, activated only when\nCF_WORKER_PROXY is set (optional CF_WORKER_PROXY_AUTH_TOKEN and\nCF_WORKER_PROXY_PORT). proxyService \n[…]\nranges are simply omitted from the response.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n* Feature upstream IP support\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: route Chromium via Cloudflare Worker SOCKS5 tunnel (#805)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:17:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "55a493a24bccdfdc1707692afc85fce8ff6bbdd8",
          "body": "…804)\n\nThe target-size failure summary was reporting the element's full\nbounding-rect (re-measured from the DOM), which hides the real hit-area\naxe evaluated when the element is partially obscured or has a\nlargest-inner-rect smaller than its bounds. Read width/height from the\ntarget-size check's sto\n[…]\n't record dimensions. When neither\nsource is available, leave axe's original failureSummary in place\nrather than blanking the dimensions field.\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): use axe's stored sub-rect for target-size enrichment (#…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:16:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d63d6d6b063ddd9bf02fa3b6a15b0a49495591b5",
          "body": "* fix(crawler): stop rate-controller from ratcheting concurrency to 1\n\nTwo bugs made concurrency collapse quickly on 4xx clusters and never\nrecover:\n\n1. Retried 403 URLs halved concurrency twice. On first failure,\n   failedRequestHandler called onFailure() (halving) then re-enqueued\n   with rateLimi\n[…]\nn:true through onFailure, so\n  the same URL cannot halve concurrency twice.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/rate controller double halve and recovery (#806)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:16:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e45b2d765f17bc17e0d41f2b95c2fd0498748100",
          "body": "waitForPageLoaded was returning before the DOM was ready to scan in two\nways: (1) the mutation observer treated repeated attribute mutations on\nthe same element (e.g. a nav dropdown flipping class during init) as a\n\"DOM settled\" signal, and (2) inside a single Promise.race, load almost\nalways beat t\n[…]\nFile all now call\n  waitForPageLoaded() with the default budgets. Local file scans\n  previously skipped this step entirely and are now covered.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(crawler): make waitForPageLoaded actually wait for hydration (#803)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-30T10:10:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ee6d58b5cf7de399010fbc437d8ff4875b989dd",
          "body": "Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.20 to 7.5.22.\n- [Release notes](https://github.com/isaacs/node-tar/releases)\n- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.20...v7.5.22)\n\n---\nupdated-depend\n[…]\nar\n  dependency-version: 7.5.22\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump tar from 7.5.20 to 7.5.22 (#802)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T08:35:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a22899838931935bb9369d7a5ef1c68b99b8b775",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.7 to 5.0.8.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.7...v5.0.8)\n\n---\nupdated-dependencies:\n- dependency-name:\n[…]\nion\n  dependency-version: 5.0.8\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump brace-expansion from 5.0.7 to 5.0.8 (#801)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T08:35:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1f81f529da80756313af4ff5d8cec4ed47c3eed4",
          "body": null,
          "is_bot": false,
          "headline": "Routine update to axe-core docs to 4.11",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T09:23:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c4c73cc7c1f68f1e3b55b951eb9a2a6981a935a",
          "body": "HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY of the form\n\"scheme://user:pass@host:port\" were passed to Playwright with credentials\nstill embedded in proxy.server, which Playwright rejects. Extract userinfo\ninto separate username/password fields (URL-decoded) so Playwright receives\nproxy auth correctly. Env-var creds (PROXY_USERNAME/PROXY_PASSWORD) still\ntake precedence over URL-embedded creds.",
          "is_bot": false,
          "headline": "fix: parse embedded userinfo from proxy env URLs (#798)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T07:31:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65eeec1df1853c6d2e3327741112a4f36a9329a2",
          "body": "* Restore native constructors before running axe\n\nPages that replace built-ins like Set/Map/WeakMap with incomplete\npolyfills cause axe-core to throw `r.has is not a function` from\ninside its minified internals, and also break Playwright's own\nreturn-value serialization (page.evaluate returns undefi\n[…]\neakSet/WeakMap. On clean pages the probe\nreturns immediately, avoiding an unnecessary DOM mutation per scan.\n\n* Bump package version\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Restore native constructors before running axe (#797)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-24T07:19:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c96b9bd72e8a69849c8b204be6a3b73e2f6fbbfc",
          "body": "`docker exec -e OOBEE_VERBOSE=1 GOOGLE_SAFE_BROWSING=1 OOBEE_FAST_CRAWLER=1 oobee-container ...`\nmade docker treat `GOOGLE_SAFE_BROWSING=1` as the container name, failing\nwith \"No such container: GOOGLE_SAFE_BROWSING=1\". Each env var needs its\nown -e flag.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): pass each env var with its own -e in docker-test.yml",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T08:01:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0fe17f933f326ec11edb242c6eda94b7a24257a6",
          "body": "…m publish manually (#796)\n\n* fix: unblock Safe Browsing DB warmup in Docker/BuildKit builds\n\nThe build-time warmup was silently timing out because Chrome refused to\nlaunch in the container:\n\n1. `--no-zygote` was passed without `--no-sandbox`. Chrome rejects that\n   combination outright (\"Zygote can\n[…]\nerators explicitly pick which commit's package.json version\n  lands on npm.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: unblock Safe Browsing DB warmup in Docker/BuildKit builds and np…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:53:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9375ee629610fc5121eadb13c8a775248ae11319",
          "body": "Chrome refuses to run as root without --no-sandbox (which was intentionally\ndropped from the warmup args), causing the build-time DB download to time\nout silently. Pre-create /data/chrome-profile owned by `purple` in the same\nroot RUN that adds the user, then drop the USER root switch around the\nwar\n[…]\nrmup chown.\n\nAlso remove the CACHEBUST build-arg plumbing: it was masking this bug by\nguaranteeing a fresh (and failing) warmup on every build.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: run Safe Browsing warmup as `purple` user so Chrome will launch",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:25:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a3704f5330a90962d2f0b5cae1a5a9170a5f60f",
          "body": "The Chrome Safe Browsing threat DB was not populating within the previous\n600s budget during Docker image builds, and cached layers on retry meant\nthe warmup step effectively no-op'd in 12s without a fresh DB.\n\n- Raise --timeout to 1200000 ms in the Dockerfile warmup step.\n- Introduce a CACHEBUST AR\n[…]\nall, and build.\n- Pass CACHEBUST=<run_id>-<run_attempt> from the GHCR workflow so retries\n  of a failed build also invalidate the warmup layer.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: bump Safe Browsing warmup to 1200s and bust cache per build",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T07:10:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34a797d274373806aaf635407d43e854783cc729",
          "body": "…--no-sandbox (#795)\n\n* fix: runCustom window duplication, overlay noise, SB injection, drop --no-sandbox\n\n- runCustom: force headless UA sniffer, wait for persistent-context initial\n  page instead of racing to newPage() (fixes duplicate about:blank window on\n  macOS), close any stray pages that com\n[…]\n Claude Opus 4.7 <noreply@anthropic.com>\n\n* chore: remove pr-description.md\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: runCustom window duplication, overlay noise, SB injection, drop …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T05:58:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2fbd120b2d21b1e30421ff38f67e21186ba5e0af",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.11.1 → v0.11.2 (#794)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-23T05:02:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fda8370b04fa2da1b885505e0f13bfa7e1592ee",
          "body": "* fix: restore viewport and reset capture entries on failure\n\nEnsure mobile viewport is restored even if screenshot capture throws,\nand always clear capture entries even if manifest write fails so a\nsubsequent scan does not inherit stale entries.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.c\n[…]\n screenshot capture, and expose desktopDom /\nmobileDom in domManifest.json.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Page DOM and Screenshot Capture for UA Testing (#782)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T05:00:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a4249f7de47c85ff699c59e50e6b02691b604cb9",
          "body": "Updated the description for GOOGLE_SAFE_BROWSING to clarify compatibility with browsers.",
          "is_bot": false,
          "headline": "Clarify GOOGLE_SAFE_BROWSING compatibility in README",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T04:38:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44466ca12eff822e869ac9db2aa003cc272e8fbd",
          "body": "Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.6 to 5.0.7.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.6...v5.0.7)\n\n---\nupdated-dependencies:\n- dependency-name:\n[…]\nion\n  dependency-version: 5.0.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump brace-expansion from 5.0.6 to 5.0.7 (#792)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T04:35:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb0ce80bdee38faf096b81b6224cb6f422733183",
          "body": "feat: add Google Safe Browsing integration to detect phishing/malware URLs\n\nImplements Safe Browsing protection to classify blocked URLs in scan results:\n- Add standalone warmup script for Docker build-time DB download\n- Support both amd64 and arm64 Chrome architectures\n- Pre-populate Safe Browsing \n[…]\ne detection\n- Update README with usage instructions\n\nRequires Google Chrome (not Chromium) on Linux, macOS, and Windows supported.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add Google Safe Browsing protection (Linux, Mac, Windows) (#793)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-23T04:34:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e44d6ab0c28b3f040c507bf2604bd94dfea002a",
          "body": "Updated the Node CLI command to use 'intelligent' for scan type and modified log printing to target specific log files.",
          "is_bot": false,
          "headline": "Modify Docker test workflow for CLI and logs",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T11:48:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4adb42b5882784c4e5bc25c2befe15eda2d79d2",
          "body": "* feat: add page DOM and screenshot capture via OOBEE_SAVE_DOM and OOBEE_SAVE_PAGE_SCREENSHOT\n\nWhen enabled, saves full-page DOM, desktop viewport screenshot, and mobile\nviewport screenshot to the results directory under page-doms/. A\ndom-manifest.json maps each URL to its hash, file paths, and erro\n[…]\ns detected at any level.\n\nBump version to 0.11.1.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/403 retry storm (#790)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T11:39:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ac8f46208477736aa162b5120e55e83c793fc91d",
          "body": "Clarify hardware requirements for scanning and concurrency settings.",
          "is_bot": false,
          "headline": "Update hardware recommendations for scanning",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T08:57:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "366bfbb0e2444d65d2273c7f742b10d640749896",
          "body": "…temap optimization, download/403 handling, unsupported document classification (#789)\n\n* fix: clone cookies from pristine user profile and eagerly clean retired pools\n\nPreviously the first browser in each pool used userDataDirectory\ndirectly, allowing Chrome to modify the cookie database. All subse\n[…]\ny@anthropic.com>\n\n* chore: bump version to 0.11.0\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: cookie clone from pristine profile, pool cleanup, intelligent si…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-13T07:19:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4286ab316fcbf451cf8140bef2a4c364283e4c6a",
          "body": "If cleanup fails on Windows (e.g. locked files), the crawlee and\ncrawlee_rq directories would otherwise be included in the zip artifact.\nSkip any root-level directory starting with \"crawlee\" during zipping.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: exclude crawlee* directories from zip output (#788)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-12T03:41:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a78d1c86be9dcc8db3f1c2763d6cb57576454d3f",
          "body": "* fix: resolve Windows crash from Crawlee lock-file race in intelligent crawl\n\nDataset and RequestQueue were opened with the same absolute path name,\ncausing both to write to the same directory on disk. On Windows,\nproper-lockfile's .lock directories from the sitemap phase could race\nwith the domain\n[…]\nlee_rq cleanup to avoid skipping on prior failure\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/windows crawlee lock race (#787)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-12T03:34:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fb27a157475207b8444976fe1377ef2ba4db8b8b",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.97 → v0.10.98 (#786)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-09T16:19:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f16746751809427f88b8d8ff67de86bfd5a0eb9",
          "body": "When crawlIntelligentSitemap invokes crawlSitemap and crawlDomain\nsequentially, each phase created a CrawlRateController with the full\nmaxRequestsPerCrawl budget (scannedCount = 0). This allowed the total\npages scanned to far exceed -p (e.g. 6500+ with -p 5000).\n\nFix: when fromCrawlIntelligentSitema\n[…]\n true, initialize the rate\ncontroller with the remaining budget (maxRequestsPerCrawl minus pages\nalready scanned in prior phases).\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: intelligent crawl overshoots page limit (-p) across phases (#785)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T16:15:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35991dc7fe50dfcf37d35fc5ca2a12250df87875",
          "body": "…(#784)\n\n* fix: propagate ruleset parameter to sitemap and intelligent crawlers\n\ncrawlSitemap and crawlIntelligentSitemap were not receiving or passing\nthe ruleset flag to runAxeScript, causing --ruleset options (e.g.\nenable-wcag-aaa) to be silently ignored for non-website scan types.\n\nCo-Authored-B\n[…]\nNavigationHook\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Add section on scan consistency\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: propagate ruleset parameter to sitemap and intelligent crawlers …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T14:12:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a20dde330f18a68faf012739b0cf8eb8b60e9e4b",
          "body": "…rge crawls (#783)\n\nAfter ~3500+ pages on Windows, the crawler would hang indefinitely due to\nbrowser pool resource exhaustion. Three contributing factors are addressed:\n\n1. Reduce browser retirements by increasing retireBrowserAfterPageCount from\n   100 (default) to 500, and ensure retired browsers\n[…]\nsecutive failure abort threshold, so the crawl aborts\n   gracefully instead of retrying indefinitely when resources are exhausted.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent Windows hang from browser pool resource exhaustion on la…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T09:37:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e7b40e57e047b0a7c27981d63b83d25c0031c596",
          "body": "…empty elements (#780)\n\n* Improve isElementTooSmall logic for element visibility\n\nEnhance isElementTooSmall function to check for non-perceivable elements based on dimensions and content.\n\n* Refactor isElementTooSmall function condition\n\nSimplified the condition for non-perceivable elements by removing checks for children and text content.",
          "is_bot": false,
          "headline": "improv: false positive in oobee-accessible-label for non-perceivable …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-09T08:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6508bc0185bfb8c43a7a16d3496fde69af0cb21",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.96 → v0.10.97 (#779)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T08:25:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38a1bbc1cf6667fe88be4ac9fe493beede1e103c",
          "body": "* fix: clean up browser pool directories and reduce their disk footprint\n\nPool re-launches create sibling directories (oobee-{token}_pool*) that\nwere never deleted by cleanUp(), and copying entire Chrome profiles into\neach pool dir caused gigabytes of waste during large scans. This adds\nglob-based p\n[…]\nresolution doesn't skip subsequent cleanup steps.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/cleanup browser pool directories (#778)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-07T08:22:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "553b740241662a59bb7e0ac6c5de68df7f7a4be3",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.95 → v0.10.96 (#777)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T00:41:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d774972227039263dce343522a5eb5ab33940bb8",
          "body": null,
          "is_bot": false,
          "headline": "Upgrade crawlee and playwright versions (#776)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-07T00:39:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d43b12872e02a19126bb4434b3820dac920f588",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo in Intel-based Mac support note",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T11:40:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b8ff8fd19ecda497e437e9d19235a9624910294",
          "body": "Updated macOS requirement from version 12 Monterey to version 15 Sequoia. Added note about discontinuation of support for Intel-based Macs.",
          "is_bot": false,
          "headline": "Update macOS version requirement and add Intel note",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T11:39:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e03481ed6004859f0d2277db92a4752c737b0352",
          "body": "…(#775)\n\nOn non-Docker platforms (macOS/Windows), fs.emptyDirSync(TMPDIR) was\nnuking the shared system temp directory, crashing the PDF generation\nstep with \"Maximum number of attempts reached\" when locked files from\nother processes prevented deletion.\n\n- Guard emptyDirSync and rmSync of TMPDIR to o\n[…]\nked files are non-fatal\n- Append process.pid to the Docker TMPDIR path so concurrent scans\n  don't clobber each other's temp files\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: restrict TMPDIR cleanup to Docker and isolate per scan instance …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T10:56:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d742cc060aa0d323d8294f315ffeb0e133148ded",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.94 → v0.10.95 (#774)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-06T10:37:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52aba6d0f820b5e62f5d1e198868630adbe1d430",
          "body": "Bumps [undici](https://github.com/nodejs/undici) from 7.24.4 to 7.28.0.\n- [Release notes](https://github.com/nodejs/undici/releases)\n- [Commits](https://github.com/nodejs/undici/compare/v7.24.4...v7.28.0)\n\n---\nupdated-dependencies:\n- dependency-name: undici\n  dependency-version: 7.28.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump undici from 7.24.4 to 7.28.0 (#771)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T10:09:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3017147a1839f4c83be938bd00fcf9b462845cac",
          "body": "…773)\n\n* improv: omit passed items from disk writes to reduce storage usage\n\n- mergeAxeResults.ts: skip itemsStore.appendPageItems for 'passed' category\n  in pushResults (both custom flow and standard flow paths)\n- mergeAxeResults.ts: remove 'passed' from buildHtmlGroups loop (no items\n  stored in i\n[…]\n, causing Chrome to crash with SIGTRAP on launch.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "improv: omit passed items from disk writes to reduce storage usage (#…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-07-06T10:09:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dfc6be34cc052115856b0f747da4fb66e6578163",
          "body": "…ncy (#770)\n\n* Fix redirect-aware entryUrl propagation and localfile URL validation\n\n* Update URL logging in found sitemaps\n\n* Set crawler retries and session rotations for domain and sitemap scans\n\n* Abort sitemap crawl early when no pages succeed and failures accumulate",
          "is_bot": false,
          "headline": "improve: redirect entry URL handling and harden sitemap crawl resilie…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T08:09:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "346dd9c6c1ccb800a6105af35c672463f363e2bc",
          "body": "…avior in EJS reports (#769)\n\n- fix scan/about modal accessibility issues and semantics in EJS components/scripts/styles\n- remove unnecessary `!important` usage in scan modal styles\n- correct ARIA roles/relationships for segmented tabs and related panels\n- make WCAG gauge value contrast evaluation d\n[…]\nmodal components/scripts/styles\n- segmented tabs components/scripts\n- `WcagGaugeBar` styles\n- rule modal page accordion builder\n- screenshot lightbox script\n- rule offcanvas accordion region semantics",
          "is_bot": false,
          "headline": "Fix accessibility regressions and custom-flow screenshot/lightbox beh…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T06:35:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d838085ac796f7e62c936b066a243d43c4455ce",
          "body": "Added guidelines for URL guard and overlay management in custom flow to prevent infinite reload loops and ensure proper handling of protocols.",
          "is_bot": false,
          "headline": "Enhance URL guard and overlay management instructions",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T04:26:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a20e0dfa3cbcbf772241aa445d5ef9b47bb77fb8",
          "body": "… (#768)\n\n- urlGuard: restoreToSafeUrl now checks that the safe/fallback URL is\n  http/https before calling page.goto(). When the entry URL is file://\n  (e.g. scanning a local HTML report), the fallback is also file://, so\n  redirecting created an infinite reload loop.\n\n- urlGuard: skip about: proto\n[…]\nrlayAllowed returns false (e.g. transient\n  file:// or about:blank URL), skip removeOverlayMenu and fall through\n  to addOverlayMenu so the overlay is (re-)injected rather than\n  permanently disabled.",
          "is_bot": false,
          "headline": "fix: url guard infinite redirect and missing overlay on macOS/Windows…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T03:05:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6353fc0933763da213c6634d1394da5ffc6aaaf",
          "body": "…cans (#767)\n\n* fix(crawler): skip empty pre-navigation headers rewrite\n\n* fix(sitemap): apply auth/non-auth headers in crawler launch context\n\n* ## Changes made\n\n### 1. `src/constants/common.ts` — `checkUrlConnectivityWithBrowser`\n**Old:** `extraHTTPHeaders.Accept ||= '...'` — mutated the shared ob\n[…]\nfired | ✅ expected — only fires when `-m` auth headers are passed |\n\n* Resolve page hang / waiting on navigation\n\n* Wait for DOMContentLoaded to fire\n\n* Update AGENTS.md for Playwright header-rewrites",
          "is_bot": false,
          "headline": "Fix: suppress Playwright header-rewrite warning for unauthenticated s…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-18T02:28:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3efa0b4336e2a5e717927158b754f11fe778a52",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.93 → v0.10.94 (#766)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-17T09:14:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b82a1b26a4e43fdb66c7000af445e3a655bcf7f4",
          "body": "…crawlDomain and crawlSitemap (#762)",
          "is_bot": false,
          "headline": "refactor(crawler): use common preNavigationHooks for auth headers in …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-17T09:13:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ce1ee9d66f4adead19f65481324917980824d13",
          "body": "* This commit fixes multiple accessibility violations in report UI templates by correcting ARIA usage, restoring valid list structure, and preserving keyboard/sort behavior.\n\nWhat was fixed\n\n1. Prioritise issues list semantics and selection behavior\n- Updated PrioritiseIssues.ejs so the priority iss\n[…]\nn place.\n- Accessibility tree semantics are now aligned with WCAG/ARIA expectations and common axe checks.\n\n* Fix <ul> list glitch in priority-issue-item\n\n* Fix underline on hover accessibility issues",
          "is_bot": false,
          "headline": "Fix/report a11y issues (#765)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-17T09:12:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eedf38916704d1180d2b033e0a3604fb4373d0df",
          "body": null,
          "is_bot": false,
          "headline": "Fix sitemap index parsing and skip image sitemaps (#764)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T10:38:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f77e8b2096d025aca534160357650e7071390cbf",
          "body": "* fix: handle XSL sitemap fetch without networkidle timeout\n\n* docs: document sitemap XSL stylesheet fetch behavior\n\n* chore: include sitemap URL in sitemap type logs",
          "is_bot": false,
          "headline": "Fix Jetpack/XSL sitemap handling and skip image sitemap feeds (#763)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T10:33:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70513487a162fdd4ed827a25bcc2dc2fc3da2e68",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.92 → v0.10.93 (#760)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-16T05:06:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd8c28b5d36de8078df62c43ddb83ac5339da3d8",
          "body": "…SON parsing errors that blocked report artifact generation, and messy console logs during initial connectivity checks (#759)\n\n* fix: pass auth headers safely in custom flow and avoid CORS failures\n\n- Add extraHTTPHeaders support to runCustom (was missing entirely)\n- Extract shared splitAuthHeaders(\n[…]\n headers are missing\n\n* fix(checkUrl): eliminate URL check console ERR_FAILED logs by restoring native layout rendering\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: issues regarding authentication-triggered CORS failures, fatal J…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-16T05:03:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "364d8beeceec96d018ad9911f35d7810f9d6ddaf",
          "body": "…on (#758)\n\nCo-authored-by: Wilson WeeSheng Khoo <wilson.khooweesheng@cognizant.com>",
          "is_bot": false,
          "headline": "chore: upgrade @sentry/node to v10 and refresh scanner fallback versi…",
          "author_name": "Wilson",
          "author_login": "WilsonkwSheng",
          "committed_at": "2026-06-16T03:27:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef5c1bc40187fa935b202186bc05c43ab0a3e607",
          "body": null,
          "is_bot": false,
          "headline": "Update AGENTS.md and README.md with env variables",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T11:16:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dadf76793bf802bab22297236ab7d2b2d27afbf6",
          "body": "* fix: use Crawlee dataset.drop() for graceful storage cleanup\n\n* fix: exclude tmp-items from oobee-scan-results.zip\n\nMove createRuleIdJson, itemsStore.cleanup(), and Sentry reporting\nbefore zipResults so that the temporary intermediate files are removed\nfrom the results directory before it gets zip\n[…]\ntems cleanup and zipResults ordering in AGENTS.md\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use Crawlee dataset.drop() for graceful storage cleanup (#745)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T10:57:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f33dca4385be30bff57a1fd87ae2880bd5f9cf52",
          "body": "…#757)\n\n* fix: group additionalScanMetadata by category in Sentry telemetry\n\nStructure ruleIdJson output from createRuleIdJson and\ncreateBasicFormHTMLSnippet by mustFix/goodToFix/needsReview so that\nSentry additionalScanMetadata distinguishes which category each rule\nbelongs to.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Additional tagging in Sentry for agency users\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/sentry scan metadata by category and websiteTag custom variable (…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T10:57:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cb1fe4001429a438791b9afe83d6659593df9b10",
          "body": "Co-authored-by: Wilson WeeSheng Khoo <wilson.khooweesheng@cognizant.com>",
          "is_bot": false,
          "headline": "fix(deps): bump lodash to 4.18.1 for security patch (#756)",
          "author_name": "Wilson",
          "author_login": "WilsonkwSheng",
          "committed_at": "2026-06-15T09:06:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9960fa08f5ba36739aa6c8ddf08408f1d58778f",
          "body": "…ts, automated concurrency recovery (#755)\n\n* fix: use cloned browser profile directly and pass user-agent to crawler contexts\n\nThe domain and sitemap crawlers were creating empty sub-profile directories\nper browser launch, discarding the cloned Chrome profile data. They also\nnever passed process.en\n[…]\nindows locales\n- Update profile cleanup to glob _pool* directories alongside base oobee-{token} dir\n\n* Update AGENTS.md\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use cloned browser profile and pass user-agent to crawler contex…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-15T09:05:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e323e90ca344657e9e1eacff928aa4067c5858b",
          "body": "Removed error log file handling logic and simplified error logging.",
          "is_bot": false,
          "headline": "Refactor error logging in utils.ts",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T08:55:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d28c5677a33c0001df77a177c81646b48364ee2f",
          "body": "… timing races (#753)\n\nCarousel libraries like slick-slider set aria-hidden=\"true\" on inactive\nslides then apply tabindex=\"-1\" to child links slightly later. The axe\nscan can capture the DOM between these two operations, reporting a\nviolation that doesn't exist in steady state. Add a post-scan\nre-ve\n[…]\ns to the event loop and re-checks the\nlive DOM — if all focusable descendants now have tabindex < 0 the\nviolation is filtered out.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: filter false-positive aria-hidden-focus violations from carousel…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T06:55:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19f846d7472247819284e01242b0cac062171a20",
          "body": "…(#752)\n\nCrawlRateController.claimSlot() was called at the top of the request\nhandler before scanning. If a page was then discarded (redirect, dedup,\nskip), the slot was consumed without producing a scanned page — causing\nfewer pages than maxPages.\n\nMove claimSlot() to the moment of success (right b\n[…]\noperations are synchronous, no race condition is possible.\n\nAlso switches remaining console.log to consoleLogger.info in crawlers.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: claim scan slots at success time to prevent maxPages undershoot …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T06:54:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43e7b679ec91884738e31bf39348ac3f2b73d120",
          "body": "…awl rate control (#750)\n\n* fix: normalize www prefix in isFollowStrategy hostname comparison\n\nSitemaps often list child sitemap URLs without the www prefix (e.g.,\nmom.gov.sg/sitemap.xml) even when the parent sitemap is served from\nwww.mom.gov.sg. The strict hostname comparison rejected these URLs,\n\n[…]\noleLogger.info instead of console.log in crawlers\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: normalize www prefix in hostname comparisons and add adaptive cr…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-12T02:23:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "07755a5ae34d23f32c8c8131b5f9ba2d04eb2981",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.91 → v0.10.92 (#749)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-11T14:04:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84f34ce0b478b807ee87d38678b0b5747b25c802",
          "body": "Comprehensive reference covering architecture, crawl flow, browser handling, platform differences, environment variables, common pitfalls, and lessons from the last 3 months of bug fixes. \r\n\r\nHelps AI agents understand Oobee's intricacies when making changes.",
          "is_bot": false,
          "headline": "docs: add AGENTS.md developer guide for AI agents",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T14:04:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3761c42f74c5ef62b68604d371d3db63b02b0921",
          "body": "…/Docker environments (#748)\n\n* fix: apply modified User-Agent during sitemap discovery in headless mode\n\nThe intelligent crawl's sitemap detection (robots.txt fetch and sitemap\npath probing) was using the raw Chromium User-Agent which contains\n\"HeadlessChrome\" in Docker/Linux. Sites like www.moh.go\n[…]\n will keep processing until enough pages succeed.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve sitemap detection and content fetch failures in headless…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:44:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26a185c7aae7a7a24cf67180f38b05e2a2cd149b",
          "body": "…retries (#747)\n\nPreviously, urlsCrawled.error was pushed in the requestHandler catch block\non every failed attempt. Since Crawlee retries requests up to 3 times, this\ncaused duplicate entries for the same URL and false positives for URLs that\neventually succeeded on retry. Errors are now only recorded in\nfailedRequestHandler, which fires exclusively after all retries are exhausted.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: remove duplicate/false-positive error entries caused by request …",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:44:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea03d963a0c292a960567f6f9e462dc26a10b74e",
          "body": "…(), before axe scanning, screenshot capture, and other operations that can close the page (#746)\n\nRemove the error recovery path that created a new page and re-navigated just to get the title (which also leaked pages since they were never closed)\nEliminates repeated \"Error while getting page title: Target page, context or browser has been closed\" log noise",
          "is_bot": false,
          "headline": "Move page.evaluate(() => document.title) to the start of runAxeScript…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-11T13:42:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd9619aca1a73b9c1e148a8ade94dfba5298d54e",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.90 → v0.10.91 (#744)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-05T10:03:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e32187cf5bce6af8a35eee6c8dc996a65b64b241",
          "body": "…eneration (#743)\n\nOn Windows, Crawlee's async lock-file operations (mkdir .json.lock) can\nfire after the crawl finishes, causing uncaughtException EPERM that kills\nthe process mid-report. This adds a scoped exception handler to suppress\nthose errors, increases the flush delay on Windows, and retries the\ncleanup rm with a fallback to best-effort so report generation always\ncompletes.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent Node crash from Crawlee EPERM on Windows during report g…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-05T10:02:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8cf8f9d937c1b4e320b81a35425ba5040b8c9fc5",
          "body": null,
          "is_bot": false,
          "headline": "Update generateOobeeClientScanner.js",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T11:00:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8caaf4adac2eac948121a3fcba8af40ee6175992",
          "body": null,
          "is_bot": false,
          "headline": "Add steps to install dependencies and generate file",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:58:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "708c041dcd26149531048aa725c7e48e33d25ec8",
          "body": "Removed the step to commit and push the generated client scanner.",
          "is_bot": false,
          "headline": "Remove commit step for generated client scanner",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:55:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14377281570e69cd7aee28dedae9e09148de2852",
          "body": null,
          "is_bot": false,
          "headline": "Fix tag naming in publish workflow",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:51:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d02b28bdb9d44bd0a793c98532d8befa013acc1",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.89 → v0.10.90 (#742)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-04T10:32:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cde54b73db9758bb9c27e88033750a816d8328c",
          "body": "…#741)\n\nRun dist/generateOobeeClientScanner.js after build and commit the\ngenerated bundle back to the repo before tagging and publishing.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: generate and commit oobee-client-scanner.js in publish workflow (…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:29:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e184e09f757ab45d8513df6ffde23e0c32f8d7b1",
          "body": "Bumps [axios](https://github.com/axios/axios) from 1.15.2 to 1.16.0.\n- [Release notes](https://github.com/axios/axios/releases)\n- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)\n- [Commits](https://github.com/axios/axios/compare/v1.15.2...v1.16.0)\n\n---\nupdated-dependencies:\n- depe\n[…]\nndency-version: 1.16.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump axios from 1.15.2 to 1.16.0 (#738)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-04T10:18:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3c19149732446eabda489147ed635bce681bee0d",
          "body": "Stream page result files sequentially instead of loading all into memory,\nwrite violation items to per-rule JSONL files on disk during accumulation\n(keeping only itemsCount in the in-memory allIssues object), and defer\nhtmlGroups construction to a second pass reading from disk.\n\nThis reduces peak heap from ~3GB to well under 4GB for 1,000-page scans\non ECS containers, preventing OOM during report artifact generation.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: reduce memory usage in mergeAxeResults for large scans (#740)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-04T10:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d9e6ca914249328d66657755f336b534d4ca804",
          "body": null,
          "is_bot": false,
          "headline": "Add release tag `latest` and build on ghcr likewise (#739)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-06-02T08:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56cef699490b3f3664561d63acc4aa93e945944a",
          "body": "Added DPG Badge to README.md",
          "is_bot": false,
          "headline": "Add DPG Badge to README",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-29T11:02:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffef20c1cbfc082d336d495759e27c8b4e2714b9",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump version to 0.10.89",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:20:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4dea24ebde090c9b92a96e39b7ec94b162ed29a",
          "body": "For needsReview/incomplete color-contrast results where axe could not\ndetermine foreground or background colors, fall back to the default axe\nmessage instead of showing \"unknown foreground on unknown background\".\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: skip custom contrast message when axe cannot determine colors",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:19:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "66bc384b78803dc3db4e9fabdd5720136cc11a47",
          "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.15.0 to 6.15.2.\n- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/qs/compare/v6.15.0...v6.15.2)\n\n---\nupdated-dependencies:\n- dependency-name: qs\n  dependency-version: 6.15.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump qs from 6.15.0 to 6.15.2 (#737)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-28T15:01:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5274f20e7cb55894402fe0ea8f4d306be6029dc",
          "body": "…sisted fixes (#720)\n\n* feat: augment axe violation messages with actionable context for LLMs\n\nEnriches Details messages for color-contrast, color-contrast-enhanced,\ntarget-size, valid-lang, and oobee-grading-text-contents with additional\ncontext gathered at scan time via Playwright page.evaluate(),\n[…]\nhan raw axe output alone.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n* Bump package version\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: augment axe violation messages with live DOM context for LLM-as…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-28T15:00:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0dab555175e41e73f73c5648195d2d6b077a1542",
          "body": "Docker requires all-lowercase image tags. Use shell parameter expansion\nto lowercase the github.repository variable before building tags.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: lowercase repository name in GHCR image tags",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T07:34:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1c76c8dfeed24034b304671072888e22cbf4404c",
          "body": "Add a manually-triggered GitHub Actions workflow that builds the oobee\nbase image for amd64 and arm64, then pushes to ghcr.io with the\nspecified release tag. Remove pinned apt versions from Dockerfile for\ncross-architecture compatibility.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add multi-arch Docker image build and push to GHCR",
          "author_name": "younglim",
          "author_login": "younglim",
          "committed_at": "2026-05-28T07:24:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "32f5a382f351d2186b685080b4316e1676cb4658",
          "body": "…s.txt (#736)\n\nTwo bugs in sanitisePattern/getUrlsFromRobotsTxt:\n\n1. Bare paths (e.g. /subscription/unsubscribe) were converted to a single\n   '/**' glob which does not match the exact URL without a trailing slash.\n   Now emits both the exact-path pattern and a children glob so the page\n   itself an\n[…]\nfix.\n\nsanitisePattern return type changed from string to string[]; call sites\nupdated to spread the result into disallowedUrls / allowedUrls.\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: correctly block exact paths and query-string patterns from robot…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-21T03:41:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4cf309ea3472b8a995d0ea859cfc2a2c33a948be",
          "body": "* fix: allow all URLs from local file sitemaps to be scanned\n\nWhen a local sitemap.xml is passed as the scan target, `crawlSitemap`\nfalls back to using the raw file path (e.g. `/app/sitemaps/foo.xml`) as\n`userUrl`. Inside `getLinksFromSitemap`, `isFollowStrategy` then tries\n`new URL('/app/sitemaps/.\n[…]\n check so redirect destinations\n  that are disallowed are never fetched\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix/local sitemap no pages scanned (#735)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-21T03:31:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "198dda18a7cd5df647e509cc54a156d12995949d",
          "body": "The crawlee folder deletion was deferred via setTimeout (fire-and-forget)\nwhich meant the folder was still present when zipResults ran immediately\nafter, including all crawlee internal JSON files in the output zip.\n\nReplace with an awaited 3-second delay followed by synchronous deletion,\nensuring the folder is removed before zipping starts.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: await crawlee folder cleanup before zipping results (#734)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T13:50:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a4adc7cad8fb68ce3545d2122b29c670e4bd937",
          "body": "URLs like https://example.com and https://example.com/ are the same page\nbut were treated as different entries in the scannedUrlSet, causing\nduplicate scans (especially in intelligent crawls where the sitemap\nphase may list the URL without trailing slash and the domain crawl phase\ndiscovers it with \n[…]\n(the same function crawlee uses\ninternally) for consistent URL normalization in dedup sets. Exposed as\nnormUrl helper in utils.ts.\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: normalize URLs for dedup to prevent scanning same page twice (#733)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T13:42:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0730de9ee9af23eb5c2ab9115304722341a6271f",
          "body": "…trategy in sitemap/intelligent crawls (#731)\n\n* feat: honour strategy in sitemap and intelligent crawls, skip redirects to external domains\n\n- Add 'ignore' strategy option (maps to EnqueueStrategy.All, no URL filtering)\n- Default strategy to 'ignore' for sitemap-only scans, 'same-domain' for others\n[…]\nl phase to proceed when no duration limit is set.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: skip redirects to external domains and honour domain/hostname s…",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T07:58:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fba67ac4c6d7dd2909f0f526b86cb0df09439bfb",
          "body": "* fix: prevent OOM in summary.html generation for large scans\n\nThe summary.ejs template was JSON.stringify-ing the entire items object\nincluding all pagesAffected arrays with their individual issue items.\nFor large scans (1000+ pages), this could produce a 2GB+ string that\nexceeds V8's string size l\n[…]\n of scanItems-light temp files after report write\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: prevent OOM in summary.html generation for large scans (#732)",
          "author_name": "Zui Young",
          "author_login": "younglim",
          "committed_at": "2026-05-20T01:46:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "709d66e27efebb00cfbe4546b62fcc487ac1470b",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: bump version 0.10.86 → v0.10.87 (#730)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-19T05:48:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08df9a1d7da2807305278edcef2ab7a64dd4933d",
          "body": "Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.5.11 to 5.8.0.\n- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)\n- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)\n- [Commits](https://\n[…]\nser\n  dependency-version: 5.7.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fast-xml-parser from 5.5.11 to 5.8.0 (#716)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-19T05:44:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 98,
      "commits_last_year": 265,
      "latest_release_at": "2026-07-31T03:50:31Z",
      "latest_release_tag": "0.11.6",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 35,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 14.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 75,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@govtechsg/oobee",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@govtechsg/oobee",
          "is_deprecated": false,
          "latest_version": "0.11.3",
          "repository_url": "https://github.com/GovTechSG/oobee",
          "versions_count": 49,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 10,
          "monthly_downloads": 59435,
          "first_published_at": "2024-12-12T08:23:12.963000Z",
          "latest_published_at": "2026-07-23T06:02:35.279000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 9
        }
      ]
    },
    "popularity": {
      "forks": 52,
      "stars": 164,
      "watchers": 6,
      "fork_history": {
        "days": [
          {
            "date": "2020-09-21",
            "count": 1
          },
          {
            "date": "2021-03-22",
            "count": 1
          },
          {
            "date": "2021-04-27",
            "count": 1
          },
          {
            "date": "2021-07-05",
            "count": 1
          },
          {
            "date": "2021-07-20",
            "count": 1
          },
          {
            "date": "2021-10-11",
            "count": 1
          },
          {
            "date": "2021-11-05",
            "count": 1
          },
          {
            "date": "2022-01-01",
            "count": 1
          },
          {
            "date": "2022-06-05",
            "count": 1
          },
          {
            "date": "2022-06-15",
            "count": 1
          },
          {
            "date": "2022-06-24",
            "count": 1
          },
          {
            "date": "2022-10-15",
            "count": 1
          },
          {
            "date": "2022-12-12",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 1
          },
          {
            "date": "2023-02-12",
            "count": 1
          },
          {
            "date": "2023-02-23",
            "count": 2
          },
          {
            "date": "2023-04-12",
            "count": 1
          },
          {
            "date": "2023-04-15",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-09-21",
            "count": 1
          },
          {
            "date": "2023-09-22",
            "count": 1
          },
          {
            "date": "2023-12-28",
            "count": 1
          },
          {
            "date": "2024-01-30",
            "count": 1
          },
          {
            "date": "2024-02-08",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 1
          },
          {
            "date": "2024-04-21",
            "count": 1
          },
          {
            "date": "2024-04-22",
            "count": 1
          },
          {
            "date": "2024-05-30",
            "count": 1
          },
          {
            "date": "2024-07-08",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-08-31",
            "count": 1
          },
          {
            "date": "2024-10-15",
            "count": 1
          },
          {
            "date": "2024-10-18",
            "count": 1
          },
          {
            "date": "2024-12-10",
            "count": 1
          },
          {
            "date": "2025-02-09",
            "count": 1
          },
          {
            "date": "2025-04-19",
            "count": 1
          },
          {
            "date": "2025-07-23",
            "count": 1
          },
          {
            "date": "2025-09-29",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          },
          {
            "date": "2025-11-18",
            "count": 1
          },
          {
            "date": "2025-12-09",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-07-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 48,
        "total_forks": 52
      },
      "star_history": null,
      "open_issues_and_prs": 20
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "examples/oobee-cypress-integration-ts/tsconfig.json",
        "examples/oobee-playwright-integration-ts/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 1456005,
      "source_files_sampled": 82,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 40971
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 500,
        "malicious_count": 0,
        "assessed_package": "npm:@govtechsg/oobee@0.11.3",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@aws-sdk/client-s3",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1049.0"
        },
        {
          "name": "@json2csv/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.3"
        },
        {
          "name": "@napi-rs/canvas",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.53"
        },
        {
          "name": "@sentry/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.58.0"
        },
        {
          "name": "@types/aws-sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.0.42"
        },
        {
          "name": "axe-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.11.4"
        },
        {
          "name": "axios",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.8.2"
        },
        {
          "name": "base64-stream",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "cheerio",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0-rc.12"
        },
        {
          "name": "crawlee",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.17.0"
        },
        {
          "name": "ejs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.9"
        },
        {
          "name": "file-type",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^21.3.3"
        },
        {
          "name": "fs-extra",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.2.0"
        },
        {
          "name": "glob",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.6"
        },
        {
          "name": "https",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "inquirer",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.2.12"
        },
        {
          "name": "jsdom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^29.0.0"
        },
        {
          "name": "jszip",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.10.1"
        },
        {
          "name": "lodash",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.18.1"
        },
        {
          "name": "mime",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.7"
        },
        {
          "name": "mime-types",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.35"
        },
        {
          "name": "minimatch",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.2.4"
        },
        {
          "name": "pdfjs-dist",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "github:veraPDF/pdfjs-dist#v4.4.168-taggedPdf-0.1.20"
        },
        {
          "name": "playwright",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.61.1"
        },
        {
          "name": "prettier",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.0"
        },
        {
          "name": "print-message",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.1"
        },
        {
          "name": "safe-regex",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "text-readability",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.0"
        },
        {
          "name": "tldts",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.27"
        },
        {
          "name": "typescript",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.4.5"
        },
        {
          "name": "url",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.3"
        },
        {
          "name": "uuid",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "validator",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.11.0"
        },
        {
          "name": "which",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.0"
        },
        {
          "name": "winston",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.11.0"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.21.1"
        },
        {
          "name": "xml2js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.2"
        },
        {
          "name": "xpath-to-css",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.0"
        },
        {
          "name": "yargs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.7.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@aws-sdk/client-s3",
            "direct": true,
            "version": "3.1049.0",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/node",
            "direct": true,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas",
            "direct": true,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node",
            "direct": true,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/aws-sdk",
            "direct": true,
            "version": "0.0.42",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": true,
            "version": "4.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "base64-stream",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": true,
            "version": "1.0.0-rc.12",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "crawlee",
            "direct": true,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ejs",
            "direct": true,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": true,
            "version": "21.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": true,
            "version": "11.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": true,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "https",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inquirer",
            "direct": true,
            "version": "8.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "inquirer",
            "direct": true,
            "version": "9.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "26.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "29.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jszip",
            "direct": true,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": true,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": true,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": true,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": true,
            "version": "10.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "pdfjs-dist",
            "direct": true,
            "version": "4.4.168",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": true,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": true,
            "version": "^1.55.0",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": true,
            "version": "3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "print-message",
            "direct": true,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-readability",
            "direct": true,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": true,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": true,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": true,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": true,
            "version": "^5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "url",
            "direct": true,
            "version": "0.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "validator",
            "direct": true,
            "version": "13.15.26",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": true,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "winston",
            "direct": true,
            "version": "3.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml2js",
            "direct": true,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "xpath-to-css",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": true,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/consts",
            "direct": false,
            "version": "2.53.3",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/datastructures",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/log",
            "direct": false,
            "version": "2.5.41",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/ps-tree",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/pseudo_url",
            "direct": false,
            "version": "2.0.82",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/timeout",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@apify/utilities",
            "direct": false,
            "version": "2.34.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/crc32",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/crc32c",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha1-browser",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-browser",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/sha256-js",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/supports-web-crypto",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/util",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.974.12",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/crc64-nvme",
            "direct": false,
            "version": "3.972.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.38",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.40",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.43",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.38",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.42",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-bucket-endpoint",
            "direct": false,
            "version": "3.972.14",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-expect-continue",
            "direct": false,
            "version": "3.972.12",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-flexible-checksums",
            "direct": false,
            "version": "3.974.20",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-location-constraint",
            "direct": false,
            "version": "3.972.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-sdk-s3",
            "direct": false,
            "version": "3.972.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-ssec",
            "direct": false,
            "version": "3.972.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.10",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.27",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1049.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.973.8",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/util-locate-window",
            "direct": false,
            "version": "3.965.5",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.24",
            "ecosystem": "npm"
          },
          {
            "name": "@aws/lambda-invoke-store",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/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.29.7",
            "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.29.7",
            "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.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@borewit/text-codec",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@bramus/specificity",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/basic",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/browser",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/browser-pool",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/cheerio",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/cli",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/core",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/http",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/jsdom",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/linkedom",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/memory-storage",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/playwright",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/puppeteer",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/templates",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/types",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@crawlee/utils",
            "direct": false,
            "version": "3.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dabh/diagnostics",
            "direct": false,
            "version": "2.0.8",
            "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": "@exodus/bytes",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@govtechsg/oobee",
            "direct": false,
            "version": "^0.10.69",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "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": "@inquirer/external-editor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@inquirer/figures",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/fs-minipass",
            "direct": false,
            "version": "4.0.1",
            "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.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/diff-sequences",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/get-type",
            "direct": false,
            "version": "30.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/pattern",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/snapshot-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "30.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "30.4.1",
            "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/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/formatters",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@json2csv/plainjs",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/serialize",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@mapbox/node-pre-gyp",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-android-arm64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-darwin-arm64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-darwin-x64",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm-gnueabihf",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-gnu",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-musl",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-arm64-musl",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-riscv64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-gnu",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-gnu",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-musl",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-linux-x64-musl",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-arm64-msvc",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-x64-msvc",
            "direct": false,
            "version": "0.1.53",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/canvas-win32-x64-msvc",
            "direct": false,
            "version": "0.1.97",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodable/entities",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api-logs",
            "direct": false,
            "version": "0.214.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/instrumentation",
            "direct": false,
            "version": "0.214.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/resources",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace-base",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.41.1",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "@rtsao/scc",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sapphire/async-queue",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@sapphire/shapeshift",
            "direct": false,
            "version": "3.9.7",
            "ecosystem": "npm"
          },
          {
            "name": "@sec-ant/readable-stream",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/core",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node-core",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/opentelemetry",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/server-utils",
            "direct": false,
            "version": "10.58.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.34.49",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "15.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/core",
            "direct": false,
            "version": "3.24.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/is-array-buffer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-buffer-from",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-utf8",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@so-ric/colorspace",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@streamparser/json",
            "direct": false,
            "version": "0.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "@tokenizer/inflate",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tokenizer/token",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "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/base64-stream",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/content-type",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint__js",
            "direct": false,
            "version": "8.42.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fs-extra",
            "direct": false,
            "version": "11.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/inquirer",
            "direct": false,
            "version": "9.0.9",
            "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/jsdom",
            "direct": false,
            "version": "21.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json5",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsonfile",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/lodash",
            "direct": false,
            "version": "4.17.24",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime-types",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/pluralize",
            "direct": false,
            "version": "0.0.29",
            "ecosystem": "npm"
          },
          {
            "name": "@types/safe-regex",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/through",
            "direct": false,
            "version": "0.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/tough-cookie",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/triple-beam",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/validator",
            "direct": false,
            "version": "13.15.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/which",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/xml2js",
            "direct": false,
            "version": "0.4.14",
            "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": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm-eabi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-android-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-darwin-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-freebsd-x64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm-musleabihf",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-arm64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-loong64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-riscv64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-gnu",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-linux-x64-musl",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-openharmony-arm64",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-wasm32-wasi",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-ia32-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@unrs/resolver-binding-win32-x64-msvc",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vladfrangu/async_event_emitter",
            "direct": false,
            "version": "2.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "abort-controller",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-attributes",
            "direct": false,
            "version": "1.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "adm-zip",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "4.1.3",
            "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-styles",
            "direct": false,
            "version": "2.2.1",
            "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": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "aproba",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "are-we-there-yet",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-buffer-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-includes",
            "direct": false,
            "version": "3.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.findlastindex",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flat",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "array.prototype.flatmap",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "arraybuffer.prototype.slice",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-function",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "30.4.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.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.8",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "browserify-zlib",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "byte-counter",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-lookup",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "13.0.19",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001780",
            "ecosystem": "npm"
          },
          {
            "name": "canvas",
            "direct": false,
            "version": "2.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "3.0.0",
            "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": "cli-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-width",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "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": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-string",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "confusing-browser-globals",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "console-control-strings",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "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-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssom",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "csv-stringify",
            "direct": false,
            "version": "6.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "cypress",
            "direct": false,
            "version": "^13.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cypress",
            "direct": false,
            "version": "^15.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-length",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-view-byte-offset",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "delegates",
            "direct": false,
            "version": "1.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": "devtools-protocol",
            "direct": false,
            "version": "0.0.1656784",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "2.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": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.321",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "enabled",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding-sniffer",
            "direct": false,
            "version": "0.2.1",
            "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": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-abstract",
            "direct": false,
            "version": "1.24.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-shim-unscopables",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-to-primitive",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "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-config-airbnb-base",
            "direct": false,
            "version": "15.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-prettier",
            "direct": false,
            "version": "8.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-import-resolver-node",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-module-utils",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-import",
            "direct": false,
            "version": "2.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-prettier",
            "direct": false,
            "version": "5.5.5",
            "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": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "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-stream",
            "direct": false,
            "version": "3.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "event-target-shim",
            "direct": false,
            "version": "5.0.1",
            "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.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-diff",
            "direct": false,
            "version": "1.3.0",
            "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-xml-builder",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-parser",
            "direct": false,
            "version": "5.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fecha",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "figlet",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "filelist",
            "direct": false,
            "version": "1.0.6",
            "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": "fingerprint-generator",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "fingerprint-injector",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fn.name",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "form-data-encoder",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "from",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "function.prototype.name",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "functions-have-names",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gauge",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "generative-bayesian-network",
            "direct": false,
            "version": "2.1.83",
            "ecosystem": "npm"
          },
          {
            "name": "generator-function",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-symbol-description",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "15.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "14.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "got-scraping",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-bigints",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-unicode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "header-generator",
            "direct": false,
            "version": "2.1.82",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http2-wrapper",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "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": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "idcac-playwright",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "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-in-the-middle",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "internal-slot",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-any-array",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-array-buffer",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-async-function",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-bigint",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-boolean-object",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-view",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-date-object",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-finalizationregistry",
            "direct": false,
            "version": "1.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-generator-function",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-negative-zero",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number-object",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-regex",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-set",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-shared-array-buffer",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-string",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-symbol",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakmap",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakref",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-weakset",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.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": "jake",
            "direct": false,
            "version": "10.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "30.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-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-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.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kuler",
            "direct": false,
            "version": "2.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": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "linkedom",
            "direct": false,
            "version": "0.18.12",
            "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.isequal",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "logform",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.7",
            "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": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "map-stream",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-max",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-min",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-rescale",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-logistic-regression",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-matrix",
            "direct": false,
            "version": "6.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "module-details-from-path",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.26.1",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "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": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.36",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-strings",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npmlog",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.24",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "object.entries",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "object.fromentries",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "object.groupby",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "object.values",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "one-time",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "ow",
            "direct": false,
            "version": "0.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "ow",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "own-keys",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "4.0.1",
            "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-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pako",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parent-require",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.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-expression-matcher",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path2d",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "pause-stream",
            "direct": false,
            "version": "0.0.11",
            "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": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "pluralize",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier-linter-helpers",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "process",
            "direct": false,
            "version": "0.11.10",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "proper-lockfile",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-chain",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "reflect.getprototypeof",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "regexp-tree",
            "direct": false,
            "version": "0.1.27",
            "ecosystem": "npm"
          },
          {
            "name": "regexp.prototype.flags",
            "direct": false,
            "version": "1.5.4",
            "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-in-the-middle",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.11",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-alpn",
            "direct": false,
            "version": "1.2.1",
            "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": "responselike",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "robots-parser",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rrweb-cssom",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-async",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "run-async",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rxjs",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-array-concat",
            "direct": false,
            "version": "1.1.3",
            "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-push-apply",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex-test",
            "direct": false,
            "version": "1.1.0",
            "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": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-proto",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "setimmediate",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-concat",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "simple-get",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "split",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-trace",
            "direct": false,
            "version": "0.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "stop-iteration-iterator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stream-chain",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "stream-combiner",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "stream-json",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-comparison",
            "direct": false,
            "version": "1.3.0",
            "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.prototype.trim",
            "direct": false,
            "version": "1.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimend",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "string.prototype.trimstart",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strnum",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strtok3",
            "direct": false,
            "version": "10.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "syllable",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.12",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "7.5.22",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-hex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-typed-emitter",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "token-types",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "triple-beam",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfig-paths",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "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": "2.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-length",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-byte-offset",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-length",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "uhyphen",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "uint8array-extras",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "unbox-primitive",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unrs-resolver",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "vali-date",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "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": "whatwg-mimetype",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "16.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which-boxed-primitive",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-builtin-type",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-collection",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "wide-align",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "winston-transport",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "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": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-naming",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlbuilder",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargonaut",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors-cjs",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 941,
        "direct_count": 46,
        "indirect_count": 895
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 7,
        "merged_prs": 642,
        "open_issues": 13,
        "closed_ratio": 0.74,
        "closed_issues": 37,
        "closed_unmerged_prs": 109
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "younglim",
          "commits": 670,
          "avatar_url": "https://avatars.githubusercontent.com/u/2021525?v=4"
        },
        {
          "type": "User",
          "login": "CKodes",
          "commits": 77,
          "avatar_url": "https://avatars.githubusercontent.com/u/78678795?v=4"
        },
        {
          "type": "User",
          "login": "WilsonkwSheng",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/30139121?v=4"
        },
        {
          "type": "User",
          "login": "greyguy21",
          "commits": 32,
          "avatar_url": "https://avatars.githubusercontent.com/u/62389546?v=4"
        },
        {
          "type": "User",
          "login": "khoodehui",
          "commits": 31,
          "avatar_url": "https://avatars.githubusercontent.com/u/67047571?v=4"
        },
        {
          "type": "User",
          "login": "joshualwf",
          "commits": 29,
          "avatar_url": "https://avatars.githubusercontent.com/u/105707762?v=4"
        },
        {
          "type": "User",
          "login": "jodichoo",
          "commits": 28,
          "avatar_url": "https://avatars.githubusercontent.com/u/77408309?v=4"
        },
        {
          "type": "User",
          "login": "Thumster",
          "commits": 26,
          "avatar_url": "https://avatars.githubusercontent.com/u/50561219?v=4"
        },
        {
          "type": "User",
          "login": "shioju",
          "commits": 26,
          "avatar_url": "https://avatars.githubusercontent.com/u/4652591?v=4"
        },
        {
          "type": "User",
          "login": "angyonghaseyo",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/89739997?v=4"
        }
      ],
      "contributors_sampled": 29,
      "top_contributor_share": 0.633
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "bump-package-version.yml",
        "docker-push-ghcr.yml",
        "docker-test.yml",
        "image.yml",
        "publish.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "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": 0,
            "reason": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/26 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "0034173737a089071aa1b8ac77c37ffb4cf5ac43",
        "ran_at": "2026-08-01T19:03:37Z",
        "aggregate_score": 5.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-31T05:54:49Z",
      "oldest_open_prs": [
        {
          "number": 587,
          "created_at": "2025-10-31T04:37:04Z",
          "last_comment_at": "2026-02-03T09:44:32Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 601,
          "created_at": "2025-12-09T01:27:09Z",
          "last_comment_at": "2025-12-09T12:36:09Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 680,
          "created_at": "2026-03-12T09:15:38Z",
          "last_comment_at": "2026-03-12T09:51:25Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 717,
          "created_at": "2026-04-28T09:19:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 751,
          "created_at": "2026-06-12T02:29:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 772,
          "created_at": "2026-06-24T07:52:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 800,
          "created_at": "2026-07-27T01:07:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-31T00:25:35Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 7,
          "created_at": "2020-09-04T13:16:15Z",
          "last_comment_at": "2021-12-14T01:37:58Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 14,
          "created_at": "2020-09-24T17:29:30Z",
          "last_comment_at": "2024-10-14T09:57:41Z",
          "last_comment_author": "younglim"
        },
        {
          "number": 19,
          "created_at": "2021-01-25T14:02:34Z",
          "last_comment_at": "2023-07-25T19:09:37Z",
          "last_comment_author": "brianteeman"
        },
        {
          "number": 44,
          "created_at": "2021-11-30T20:57:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 52,
          "created_at": "2022-02-18T02:24:59Z",
          "last_comment_at": "2024-01-18T17:11:54Z",
          "last_comment_author": "jcrain23"
        },
        {
          "number": 217,
          "created_at": "2023-10-26T16:02:52Z",
          "last_comment_at": "2024-03-14T15:58:44Z",
          "last_comment_author": "brianteeman"
        },
        {
          "number": 240,
          "created_at": "2023-11-27T13:03:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 241,
          "created_at": "2023-11-27T13:05:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 255,
          "created_at": "2024-01-05T17:24:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2024-01-06T13:47:24Z",
          "last_comment_at": "2024-01-08T17:30:58Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 257,
          "created_at": "2024-01-06T14:01:20Z",
          "last_comment_at": "2024-01-08T17:52:33Z",
          "last_comment_author": "mgifford"
        },
        {
          "number": 263,
          "created_at": "2024-01-19T20:17:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 380,
          "created_at": "2024-07-03T14:18:43Z",
          "last_comment_at": "2024-07-18T07:56:03Z",
          "last_comment_author": "younglim"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/GovTechSG/oobee",
    "host": "github.com",
    "name": "oobee",
    "owner": "GovTechSG"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "excellent",
      "name": "Overall health",
      "note": "The weighted overall 69 is calibrated to 81 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 69,
            "calibrated": 81,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 81,
      "inputs": {
        "security": 64,
        "vitality": 89,
        "community": 67,
        "governance": 65,
        "calibration": "2026-08-02",
        "engineering": 58,
        "ai_readiness": 73,
        "weighted_overall_raw": 69
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 265,
              "human_commit_share": 0.82,
              "days_since_last_push": 1,
              "active_weeks_last_year": 35
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "35/52 weeks with commits",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 35
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "265 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 265
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 98,
              "latest_release_tag": "0.11.6",
              "releases_from_tags": false,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 14.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "98 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 98
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~14.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 14.2
                    }
                  }
                ],
                "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": "exceptional",
            "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": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "forks": 52,
              "stars": 164,
              "watchers": 6,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "164 stars",
                "points": 35.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 164
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "52 forks",
                "points": 14.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 52
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "6 watchers",
                "points": 3.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "packages": [
                "@govtechsg/oobee"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 59435
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "59,435 downloads/month across npm",
                "points": 63.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 59435,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 65,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 29,
              "top_contributor_share": 0.633
            },
            "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 63% of commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 63
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "29 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 65,
            "inputs": {
              "merged_prs": 642,
              "open_issues": 13,
              "closed_issues": 37,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.74,
              "closed_unmerged_prs": 109,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "74% of issues closed",
                "points": 31.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "642/751 decided PRs merged",
                "points": 25.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 642,
                      "decided": 751
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "followers": 312,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "GovTechSG",
              "public_repos": 171,
              "account_age_days": 4097
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "312 followers of GovTechSG",
                "points": 17.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 312,
                      "login": "GovTechSG"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "171 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 171
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@govtechsg/oobee"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 9
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 9 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 9
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "49 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 49
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 58,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "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": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": 64,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5.5
            },
            "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": "0 out of 17 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@govtechsg/oobee@0.11.3 runtime dependency closure — what installing the published package pulls in — 500 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@govtechsg/oobee@0.11.3",
                  "assessed": 500
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 500,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "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": 500,
              "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 4
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.841,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 40971
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "69 of 82 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 69,
                      "sampled": 82
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "examples/oobee-cypress-integration-ts/tsconfig.json",
                "examples/oobee-playwright-integration-ts/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.48,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.07
            },
            "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": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, 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": "48 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 48,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "7 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 7,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "primary_language": "EJS",
              "largest_source_bytes": 1456005,
              "source_files_sampled": 82,
              "oversized_source_files": 4
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "EJS with type-check config (examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "examples/oobee-cypress-integration-ts/tsconfig.json, examples/oobee-playwright-integration-ts/tsconfig.json, tsconfig.json",
                      "language": "EJS"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "4/82 source files over 60KB",
                "points": 52.3,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 82,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "library",
        "application"
      ],
      "labels": [
        "library",
        "cli"
      ],
      "scores": {
        "cli": 4,
        "library": 6
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "dependencies",
          "label": "cli",
          "source": "dep:yargs",
          "weight": 4
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-01T19:04:02.694606Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/GovTechSG/oobee.svg",
  "full_name": "GovTechSG/oobee",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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