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

showdownjs / showdown

A bidirectional Markdown to HTML to Markdown converter written in Javascript

JavaScript · HTMLMIT★ 14,873 星标⑂ 1,568 复刻始于 2008年11月在 GitHub 上查看 ↗

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

71
总分 / 100
良好

软件健康指数

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

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

评分画像

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

所有权

34 关注者14 个公开仓库始于 2012年11月

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

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npmshowdown2.1.05,622,437621554 天前markdownconverter

按类别列示的指标

活力

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

57中等 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 3 天前
3.5/36提交节奏 — 52 周中有 5 周有提交
18/18提交量 — 最近一年 188 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year188
human_commit_share1
days_since_last_push3
active_weeks_last_year5

发布纪律

40存在风险
评分方式
27/27有发布版本 — 已发布 54 个发布版本
0/36发布时效 — 最近一次发布版本于 1,554 天前
12.6/27发布节奏 — 约每 176.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count54
latest_release_tag2.1.0
releases_from_tags
days_since_latest_release1,554
mean_days_between_releases176.8

社区与采用

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

89优秀 · 占总体的 18%
评分方式
60/60星标 — 14,873 个星标
25/25复刻 — 1,568 个复刻
12.6/15关注者 — 184 位关注者
所用输入
forks1,568
stars14,873
watchers184
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

53中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
4.2/22.5提交分布 — 头号贡献者编写了 81% 的提交
13.5/13.5贡献者广度 — 74 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 4 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled74
top_contributor_share0.813
评分方式
33.1/46.8议题解决 — 71% 的议题已关闭
18.4/38.3PR 接受 — 已裁定的 PR 中 143/298 已合并
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs143
open_issues218
closed_issues528
issue_closed_ratio0.708
closed_unmerged_prs155
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
11.1/25所有者影响力 — showdownjs 有 34 位关注者
20.6/25既往记录 — 14 个公开仓库,账户约 13 年
所用输入
followers34
owner_typeOrganization
is_verified
owner_loginshowdownjs
public_repos14
account_age_days5,004
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
4/35发布时效 — 最近一次发布于 1,554 天前
20/20版本历史 — 62 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesshowdown
ecosystemsnpm
any_deprecated
min_days_since_publish1,554

工程质量

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

87优秀 · 占总体的 20%

工程实践

88优秀
评分方式
24/24CI 工作流 — 6 个工作流
24/24存在测试
16/16Linter 配置 — eslint.config.mjs
0/9.6Pre-commit 钩子
6.4/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

85优秀
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
10/10主题标签 — 9 个主题标签
10/10Wiki
所用输入
topicsshowdown, javascript, markdown, markdown-parser, markdown-flavors, gfm, html, converter, html-converter
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

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

77良好 · 占总体的 16%

安全态势

71良好
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 4 contributing companies or organizations
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 8 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — 无数据
5/5Pinned-Dependencies — all dependencies are pinned
5/5SAST — SAST tool detected: CodeQL
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
4.5/7.5Vulnerabilities — 4 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate7.1
已排除计分(无数据或不适用):branch_protection, ci_tests, packaging。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages1
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 npm:showdown@2.1.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 1 个软件包。 未对可达性进行分析。

AI 就绪度

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

53中等 · 占总体的 0%
评分方式
0/45代理指令 — 没有 CLAUDE.md / AGENTS.md / 编辑器规则
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 87 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.87
agent_instruction_files
agent_instruction_max_bytes
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.mjs
0/11静态类型检查
10/10可复现环境 — lockfile
4/10已体现的代理实践 — 最近 100 次提交中有 2 次由代理编写或署名代理
5/8自动化维护 — 已配置依赖自动化,但在抽样提交中未观察到
10/10OpenSSF Scorecard:Pinned-Dependencies — all dependencies are pinned
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.02
toolchain_manifests
dependency_bot_commit_share0
评分方式
0/45可类型检查的代码 — JavaScript,未配置类型检查
54.5/55可控的文件大小 — 采样的 122 个源文件中有 1 个超过 60KB
所用输入
primary_languageJavaScript
largest_source_bytes111,256
source_files_sampled122
oversized_source_files1

关键数据

14,873GitHub 星标
74贡献者
188最近 12 个月提交数
3距最近推送天数
54发布版本数
1巴士系数(bus factor)
218开放议题
npm, PyPI软件包生态系统数

数据采集警告

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

更多细节

Star 与 Fork 历史 0 ★ / 1,568 ⇿
0Star
1,568Fork
34发布

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

仅显示最近的历史——该仓库超出采集窗口,因此未采集最早的历史记录。

4006008001,0001,2001,4001,6001,568102016-082021-082026-07
主版本 1次版本 6修订 26

每个点涵盖 10 天。

OpenSSF Scorecard 7.1 / 10
7.1综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-23 12:24 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
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
10Pinned-Dependenciesall dependencies are pinned
10SASTSAST tool detected: CodeQL
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
6Vulnerabilities4 existing vulnerabilities detected
直接依赖 2
注册表软件包版本约束清单文件
npmcommander^14.0.0package.json
npmhappy-dom^20.10.6package.json
全部依赖 733

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

注册表软件包版本关系
npmcommander14.0.3直接
npmhappy-dom20.10.6直接
npm@acemir/cssom0.9.31间接
npm@asamuzakjp/css-color4.1.2间接
npm@asamuzakjp/dom-selector6.8.1间接
npm@asamuzakjp/nwsapi2.3.9间接
npm@aws-sdk/checksums3.1000.11间接
npm@aws-sdk/client-s33.1078.0间接
npm@aws-sdk/core3.974.26间接
npm@aws-sdk/credential-provider-env3.972.52间接
npm@aws-sdk/credential-provider-http3.972.54间接
npm@aws-sdk/credential-provider-ini3.972.59间接
npm@aws-sdk/credential-provider-login3.972.58间接
npm@aws-sdk/credential-provider-node3.972.61间接
npm@aws-sdk/credential-provider-process3.972.52间接
npm@aws-sdk/credential-provider-sso3.972.58间接
npm@aws-sdk/credential-provider-web-identity3.972.58间接
npm@aws-sdk/middleware-sdk-s33.972.57间接
npm@aws-sdk/nested-clients3.997.26间接
npm@aws-sdk/signature-v4-multi-region3.996.38间接
npm@aws-sdk/token-providers3.1078.0间接
npm@aws-sdk/types3.973.15间接
npm@aws-sdk/xml-builder3.972.33间接
npm@aws/lambda-invoke-store0.2.4间接
npm@babel/code-frame7.29.7间接
npm@babel/helper-validator-identifier7.29.7间接
npm@blazediff/core1.9.1间接
npm@colors/colors1.6.0间接
npm@conventional-changelog/git-client2.7.0间接
npm@csstools/color-helpers6.1.0间接
npm@csstools/css-calc3.2.1间接
npm@csstools/css-color-parser4.1.9间接
npm@csstools/css-parser-algorithms4.0.0间接
npm@csstools/css-syntax-patches-for-csstree1.1.6间接
npm@csstools/css-tokenizer4.0.0间接
npm@dabh/diagnostics2.0.8间接
npm@emnapi/core1.11.1间接
npm@emnapi/runtime1.11.1间接
npm@emnapi/wasi-threads1.2.2间接
npm@esbuild/aix-ppc640.28.1间接
npm@esbuild/android-arm0.28.1间接
npm@esbuild/android-arm640.28.1间接
npm@esbuild/android-x640.28.1间接
npm@esbuild/darwin-arm640.28.1间接
npm@esbuild/darwin-x640.28.1间接
npm@esbuild/freebsd-arm640.28.1间接
npm@esbuild/freebsd-x640.28.1间接
npm@esbuild/linux-arm0.28.1间接
npm@esbuild/linux-arm640.28.1间接
npm@esbuild/linux-ia320.28.1间接
npm@esbuild/linux-loong640.28.1间接
npm@esbuild/linux-mips64el0.28.1间接
npm@esbuild/linux-ppc640.28.1间接
npm@esbuild/linux-riscv640.28.1间接
npm@esbuild/linux-s390x0.28.1间接
npm@esbuild/linux-x640.28.1间接
npm@esbuild/netbsd-arm640.28.1间接
npm@esbuild/netbsd-x640.28.1间接
npm@esbuild/openbsd-arm640.28.1间接
npm@esbuild/openbsd-x640.28.1间接
npm@esbuild/openharmony-arm640.28.1间接
npm@esbuild/sunos-x640.28.1间接
npm@esbuild/win32-arm640.28.1间接
npm@esbuild/win32-ia320.28.1间接
npm@esbuild/win32-x640.28.1间接
npm@eslint-community/eslint-utils4.9.1间接
npm@eslint-community/regexpp4.12.2间接
npm@eslint/config-array0.23.5间接
npm@eslint/config-helpers0.6.0间接
npm@eslint/core1.2.1间接
npm@eslint/js10.0.1间接
npm@eslint/object-schema3.0.5间接
npm@eslint/plugin-kit0.7.2间接
npm@exodus/bytes1.15.1间接
npm@google-cloud/compute5.3.0间接
npm@google-cloud/container6.10.0间接
npm@google-cloud/resource-manager6.3.0间接
npm@grpc/grpc-js1.14.4间接
npm@grpc/proto-loader0.7.15间接
npm@grpc/proto-loader0.8.1间接
npm@grpc/reflection1.0.4间接
npm@humanfs/core0.19.2间接
npm@humanfs/node0.16.8间接
npm@humanfs/types0.15.0间接
npm@humanwhocodes/module-importer1.0.1间接
npm@humanwhocodes/retry0.4.3间接
npm@hutson/parse-repository-url5.0.0间接
npm@isaacs/cliui8.0.2间接
npm@jridgewell/sourcemap-codec1.5.5间接
npm@js-sdsl/ordered-map4.4.2间接
npm@jsep-plugin/assignment1.3.0间接
npm@jsep-plugin/regex1.0.4间接
npm@kubernetes/client-node1.4.0间接
npm@kwsites/file-exists1.1.1间接
npm@kwsites/promise-deferred1.1.1间接
npm@napi-rs/wasm-runtime1.1.6间接
npm@open-draft/until1.0.3间接
npm@oxc-project/types0.138.0间接
npm@percy/appium-app2.1.0间接
npm@percy/sdk-utils1.32.2间接
npm@percy/selenium-webdriver2.2.6间接
npm@pkgjs/parseargs0.11.0间接
npm@playwright/test1.61.1间接
npm@pnpm/config.env-replace1.1.0间接
npm@pnpm/network.ca-file1.0.2间接
npm@pnpm/npm-conf3.0.3间接
npm@polka/url1.0.0-next.29间接
npm@protobufjs/aspromise1.1.2间接
npm@protobufjs/base641.1.2间接
npm@protobufjs/codegen2.0.5间接
npm@protobufjs/eventemitter1.1.1间接
npm@protobufjs/fetch1.1.1间接
npm@protobufjs/float1.0.2间接
npm@protobufjs/path1.1.2间接
npm@protobufjs/pool1.1.0间接
npm@protobufjs/utf81.1.1间接
npm@rolldown/binding-android-arm641.1.4间接
npm@rolldown/binding-darwin-arm641.1.4间接
npm@rolldown/binding-darwin-x641.1.4间接
npm@rolldown/binding-freebsd-x641.1.4间接
npm@rolldown/binding-linux-arm-gnueabihf1.1.4间接
npm@rolldown/binding-linux-arm64-gnu1.1.4间接
npm@rolldown/binding-linux-arm64-musl1.1.4间接
npm@rolldown/binding-linux-ppc64-gnu1.1.4间接
npm@rolldown/binding-linux-s390x-gnu1.1.4间接
npm@rolldown/binding-linux-x64-gnu1.1.4间接
npm@rolldown/binding-linux-x64-musl1.1.4间接
npm@rolldown/binding-openharmony-arm641.1.4间接
npm@rolldown/binding-wasm32-wasi1.1.4间接
npm@rolldown/binding-win32-arm64-msvc1.1.4间接
npm@rolldown/binding-win32-x64-msvc1.1.4间接
npm@rolldown/pluginutils1.0.1间接
npm@simple-git/args-pathspec1.0.3间接
npm@simple-git/argv-parser1.1.1间接
npm@simple-libs/child-process-utils1.0.2间接
npm@simple-libs/stream-utils1.2.0间接
npm@sindresorhus/is4.6.0间接
npm@sindresorhus/is5.6.0间接
npm@smithy/core3.29.0间接
npm@smithy/credential-provider-imds4.4.5间接
npm@smithy/fetch-http-handler5.6.2间接
npm@smithy/node-http-handler4.9.2间接
npm@smithy/signature-v45.6.1间接
npm@smithy/types4.15.1间接
npm@so-ric/colorspace1.1.6间接
npm@standard-schema/spec1.1.0间接
npm@stylistic/eslint-plugin5.10.0间接
npm@szmarczak/http-timer4.0.6间接
npm@szmarczak/http-timer5.0.1间接
npm@tootallnate/quickjs-emscripten0.23.0间接
npm@tybys/wasm-util0.10.3间接
npm@types/cacheable-request6.0.3间接
npm@types/chai5.2.3间接
npm@types/deep-eql4.0.2间接
npm@types/esrecurse4.3.1间接
npm@types/estree1.0.9间接
npm@types/http-cache-semantics4.2.0间接
npm@types/js-yaml4.0.9间接
npm@types/json-schema7.0.15间接
npm@types/keyv3.1.4间接
npm@types/node24.13.2间接
npm@types/node-fetch2.6.13间接
npm@types/normalize-package-data2.4.4间接
npm@types/responselike1.0.3间接
npm@types/stream-buffers3.0.8间接
npm@types/triple-beam1.3.5间接
npm@types/whatwg-mimetype3.0.2间接
npm@types/ws8.18.1间接
npm@typescript-eslint/types8.62.1间接
npm@vitest/browser4.1.9间接
npm@vitest/browser-playwright4.1.9间接
npm@vitest/expect4.1.9间接
npm@vitest/mocker4.1.9间接
npm@vitest/pretty-format4.1.9间接
npm@vitest/runner4.1.9间接
npm@vitest/snapshot4.1.9间接
npm@vitest/spy4.1.9间接
npm@vitest/utils4.1.9间接
npmabort-controller3.0.0间接
npmacorn8.17.0间接
npmacorn-jsx5.3.2间接
npmadd-stream1.0.0间接
npmagent-base6.0.2间接
npmagent-base7.1.4间接
npmajv6.15.0间接
npmajv8.20.0间接
npmansi-align3.0.1间接
npmansi-regex5.0.1间接
npmansi-regex6.2.2间接
npmansi-styles4.3.0间接
npmansi-styles6.2.3间接
npmarchiver7.0.1间接
npmarchiver-utils5.0.2间接
npmargparse1.0.10间接
npmargparse2.0.1间接
npmarray-ify1.0.0间接
npmassertion-error2.0.1间接
npmast-types0.13.4间接
npmastral-regex2.0.0间接
npmasync3.2.6间接
npmasynckit0.4.0间接
npmb4a1.8.1间接
npmbalanced-match1.0.2间接
npmbalanced-match4.0.4间接
npmbare-events2.9.1间接
npmbare-fs4.7.2间接
npmbare-os3.9.3间接
npmbare-path3.0.1间接
npmbare-stream2.13.3间接
npmbare-url2.4.5间接
npmbase64-js1.5.1间接
npmbasic-ftp5.3.1间接
npmbidi-js1.0.3间接
npmbignumber.js9.3.1间接
npmbluebird3.7.2间接
npmboolbase1.0.0间接
npmboolean3.2.0间接
npmbowser2.14.1间接
npmboxen7.1.1间接
npmbrace-expansion2.1.1间接
npmbrace-expansion5.0.7间接
npmbrowserstack-local1.5.13间接
npmbrowserstack-node-sdk1.60.1间接
npmbuffer6.0.3间接
npmbuffer-crc321.0.0间接
npmbuffer-equal-constant-time1.0.1间接
npmbuffer-image-size0.6.4间接
npmcacheable-lookup5.0.4间接
npmcacheable-lookup7.0.0间接
npmcacheable-request10.2.14间接
npmcacheable-request7.0.4间接
npmcall-bind-apply-helpers1.0.2间接
npmcall-bound1.0.4间接
npmcamelcase7.0.1间接
npmchai6.2.2间接
npmchalk4.1.2间接
npmchalk5.6.2间接
npmcheerio1.0.0-rc.11间接
npmcheerio-select2.1.0间接
npmci-info3.9.0间接
npmcli-boxes3.0.0间接
npmcliui8.0.1间接
npmclone-response1.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间接
npmcombined-stream1.0.8间接
npmcommonmark-spec0.31.2间接
npmcompare-func2.0.0间接
npmcompress-commons6.0.2间接
npmconfig-chain1.1.13间接
npmconfigstore6.0.0间接
npmconventional-changelog6.0.0间接
npmconventional-changelog-angular8.3.1间接
npmconventional-changelog-atom5.1.0间接
npmconventional-changelog-cli5.0.0间接
npmconventional-changelog-codemirror5.1.0间接
npmconventional-changelog-conventionalcommits8.0.0间接
npmconventional-changelog-core8.0.0间接
npmconventional-changelog-ember5.1.0间接
npmconventional-changelog-eslint6.1.0间接
npmconventional-changelog-express5.1.0间接
npmconventional-changelog-jquery6.1.0间接
npmconventional-changelog-jshint5.2.0间接
npmconventional-changelog-preset-loader5.0.0间接
npmconventional-changelog-writer8.4.0间接
npmconventional-commits-filter5.0.0间接
npmconventional-commits-parser6.4.0间接
npmconvert-source-map2.0.0间接
npmcore-util-is1.0.3间接
npmcrc-321.2.2间接
npmcrc32-stream6.0.0间接
npmcross-spawn7.0.6间接
npmcrypto-random-string4.0.0间接
npmcss-select5.2.2间接
npmcss-tree3.2.1间接
npmcss-what6.2.2间接
npmcssstyle5.3.7间接
npmdata-uri-to-buffer4.0.1间接
npmdata-uri-to-buffer6.0.2间接
npmdata-urls6.0.1间接
npmdebug4.4.3间接
npmdecimal.js10.6.0间接
npmdecompress-response6.0.0间接
npmdeep-extend0.6.0间接
npmdeep-is0.1.4间接
npmdefer-to-connect2.0.1间接
npmdefine-data-property1.1.4间接
npmdefine-properties1.2.1间接
npmdegenerator5.0.1间接
npmdelayed-stream1.0.0间接
npmdetect-libc2.1.2间接
npmdetect-node2.1.0间接
npmdiffable-html5.0.0间接
npmdom-serializer0.2.2间接
npmdom-serializer2.0.0间接
npmdomelementtype1.3.1间接
npmdomelementtype2.3.0间接
npmdomhandler2.4.2间接
npmdomhandler5.0.3间接
npmdomutils1.7.0间接
npmdomutils3.2.2间接
npmdot-prop5.3.0间接
npmdot-prop6.0.1间接
npmdotenv16.6.1间接
npmdunder-proto1.0.1间接
npmduplexify4.1.3间接
npmeastasianwidth0.2.0间接
npmecdsa-sig-formatter1.0.11间接
npmemittery0.11.0间接
npmemoji-regex8.0.0间接
npmemoji-regex9.2.2间接
npmenabled2.0.0间接
npmend-of-stream1.4.5间接
npmentities1.1.2间接
npmentities2.2.0间接
npmentities4.5.0间接
npmentities6.0.1间接
npmentities7.0.1间接
npmentities8.0.0间接
npmes-define-property1.0.1间接
npmes-errors1.3.0间接
npmes-module-lexer2.2.0间接
npmes-object-atoms1.1.2间接
npmes-set-tostringtag2.1.0间接
npmes6-error4.1.1间接
npmesbuild0.28.1间接
npmescalade3.2.0间接
npmescape-goat4.0.0间接
npmescape-string-regexp4.0.0间接
npmescodegen2.1.0间接
npmeslint10.6.0间接
npmeslint-scope9.1.2间接
npmeslint-visitor-keys3.4.3间接
npmeslint-visitor-keys4.2.1间接
npmeslint-visitor-keys5.0.1间接
npmespree10.4.0间接
npmespree11.2.0间接
npmesprima4.0.1间接
npmesquery1.7.0间接
npmesrecurse4.3.0间接
npmestraverse5.3.0间接
npmestree-walker3.0.3间接
npmesutils2.0.3间接
npmevent-target-shim5.0.1间接
npmevents3.3.0间接
npmevents-universal1.0.1间接
npmexeca5.1.1间接
npmexpect-type1.4.0间接
npmextend3.0.2间接
npmfast-deep-equal3.1.3间接
npmfast-fifo1.3.2间接
npmfast-json-stable-stringify2.1.0间接
npmfast-levenshtein2.0.6间接
npmfast-uri3.1.3间接
npmfdir6.5.0间接
npmfecha4.2.3间接
npmfetch-blob3.2.0间接
npmfile-entry-cache8.0.0间接
npmfind-up5.0.0间接
npmfind-up-simple1.0.1间接
npmflat-cache4.0.1间接
npmflatted3.4.2间接
npmfn.name1.1.0间接
npmfollow-redirects1.16.0间接
npmforeground-child3.3.1间接
npmform-data4.0.6间接
npmform-data-encoder2.1.4间接
npmformdata-polyfill4.0.10间接
npmfsevents2.3.2间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmgaxios6.7.1间接
npmgaxios7.1.3间接
npmgaxios7.1.5间接
npmgcp-metadata6.1.1间接
npmgcp-metadata8.1.3间接
npmget-caller-file2.0.5间接
npmget-intrinsic1.3.0间接
npmget-proto1.0.1间接
npmget-stream5.2.0间接
npmget-stream6.0.1间接
npmget-uri6.0.5间接
npmgetos3.2.1间接
npmgit-last-commit1.0.1间接
npmgit-raw-commits5.0.1间接
npmgit-repo-info2.1.1间接
npmgit-semver-tags8.0.1间接
npmgitconfiglocal2.1.0间接
npmglob10.5.0间接
npmglob-parent6.0.2间接
npmglobal-agent3.0.0间接
npmglobal-dirs3.0.1间接
npmglobals17.7.0间接
npmglobalthis1.0.4间接
npmgoogle-auth-library10.5.0间接
npmgoogle-auth-library9.15.1间接
npmgoogle-gax5.0.7间接
npmgoogle-logging-utils0.0.2间接
npmgoogle-logging-utils1.1.3间接
npmgoogle-protobuf3.21.4间接
npmgoogleapis126.0.1间接
npmgoogleapis-common7.2.0间接
npmgopd1.2.0间接
npmgot11.8.6间接
npmgot12.6.1间接
npmgraceful-fs4.2.10间接
npmgraceful-fs4.2.11间接
npmgtoken7.1.0间接
npmgtoken8.0.0间接
npmhandlebars4.7.9间接
npmhas-flag4.0.0间接
npmhas-property-descriptors1.0.2间接
npmhas-symbols1.1.0间接
npmhas-tostringtag1.0.2间接
npmhas-yarn3.0.0间接
npmhasown2.0.4间接
npmheaders-utils1.2.5间接
npmhosted-git-info7.0.2间接
npmhpagent1.2.0间接
npmhtml-encoding-sniffer6.0.0间接
npmhtmlparser23.10.1间接
npmhtmlparser28.0.2间接
npmhttp-cache-semantics4.2.0间接
npmhttp-proxy-agent7.0.2间接
npmhttp2-wrapper1.0.3间接
npmhttp2-wrapper2.2.1间接
npmhttps-proxy-agent5.0.1间接
npmhttps-proxy-agent7.0.6间接
npmhuman-signals2.1.0间接
npmieee7541.2.1间接
npmignore5.3.2间接
npmimport-lazy4.0.0间接
npmimurmurhash0.1.4间接
npmindex-to-position1.2.0间接
npminherits2.0.4间接
npmini1.3.8间接
npmini2.0.0间接
npmip-address10.2.0间接
npmis-ci3.0.1间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-glob4.0.3间接
npmis-installed-globally0.4.0间接
npmis-npm6.1.0间接
npmis-obj2.0.0间接
npmis-path-inside3.0.3间接
npmis-potential-custom-element-name1.0.1间接
npmis-running2.1.0间接
npmis-stream2.0.1间接
npmis-typedarray1.0.0间接
npmis-yarn-global0.4.1间接
npmisarray1.0.0间接
npmisexe2.0.0间接
npmisomorphic-ws5.0.0间接
npmjackspeak3.4.3间接
npmjest-worker28.1.3间接
npmjose6.2.3间接
npmjs-tokens4.0.0间接
npmjs-yaml3.15.0间接
npmjs-yaml4.3.0间接
npmjs-yaml-cloudformation-schema1.0.0间接
npmjs-yaml-js-types1.0.1间接
npmjsdom27.4.0间接
npmjsep1.4.0间接
npmjson-bigint1.0.0间接
npmjson-buffer3.0.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson-stable-stringify-without-jsonify1.0.1间接
npmjson-stringify-safe5.0.1间接
npmjsonpath-plus10.4.0间接
npmjwa2.0.1间接
npmjws4.0.1间接
npmkeyv4.5.4间接
npmkuler2.0.0间接
npmlatest-version7.0.0间接
npmlazystream1.0.1间接
npmlevn0.4.1间接
npmlightningcss1.32.0间接
npmlightningcss-android-arm641.32.0间接
npmlightningcss-darwin-arm641.32.0间接
npmlightningcss-darwin-x641.32.0间接
npmlightningcss-freebsd-x641.32.0间接
npmlightningcss-linux-arm-gnueabihf1.32.0间接
npmlightningcss-linux-arm64-gnu1.32.0间接
npmlightningcss-linux-arm64-musl1.32.0间接
npmlightningcss-linux-x64-gnu1.32.0间接
npmlightningcss-linux-x64-musl1.32.0间接
npmlightningcss-win32-arm64-msvc1.32.0间接
npmlightningcss-win32-x64-msvc1.32.0间接
npmlocate-path6.0.0间接
npmlodash4.18.1间接
npmlodash.camelcase4.3.0间接
npmlodash.truncate4.4.2间接
npmlogform2.7.0间接
npmlong5.3.2间接
npmlowercase-keys2.0.0间接
npmlowercase-keys3.0.0间接
npmlru-cache10.4.3间接
npmlru-cache11.5.1间接
npmmagic-string0.30.21间接
npmmatcher3.0.0间接
npmmath-intrinsics1.1.0间接
npmmdn-data2.27.1间接
npmmeow13.2.0间接
npmmerge-stream2.0.0间接
npmmime-db1.52.0间接
npmmime-types2.1.35间接
npmmimic-fn2.1.0间接
npmmimic-response1.0.1间接
npmmimic-response3.1.0间接
npmmimic-response4.0.0间接
npmminimatch10.2.5间接
npmminimatch5.1.9间接
npmminimatch9.0.9间接
npmminimist1.2.8间接
npmminipass7.1.3间接
npmmonkeypatch1.0.0间接
npmmrmime2.0.1间接
npmms2.1.3间接
npmnanoid3.3.15间接
npmnatural-compare1.4.0间接
npmneo-async2.6.2间接
npmnetmask2.1.1间接
npmnode-domexception1.0.0间接
npmnode-fetch2.7.0间接
npmnode-fetch3.3.2间接
npmnode-request-interceptor0.6.3间接
npmnormalize-package-data6.0.2间接
npmnormalize-path3.0.0间接
npmnormalize-url6.1.0间接
npmnormalize-url8.1.1间接
npmnpm-run-path4.0.1间接
npmnth-check2.1.1间接
npmoauth4webapi3.8.6间接
npmobject-hash3.0.0间接
npmobject-inspect1.13.4间接
npmobject-keys1.1.1间接
npmobug2.1.3间接
npmonce1.4.0间接
npmone-time1.0.0间接
npmonetime5.1.2间接
npmopenid-client6.8.4间接
npmoptionator0.9.4间接
npmp-cancelable2.1.1间接
npmp-cancelable3.0.0间接
npmp-limit3.1.0间接
npmp-locate5.0.0间接
npmpac-proxy-agent7.2.0间接
npmpac-resolver7.0.1间接
npmpackage-json8.1.1间接
npmpackage-json-from-dist1.0.1间接
npmparse-json8.3.0间接
npmparse57.3.0间接
npmparse58.0.1间接
npmparse5-htmlparser2-tree-adapter7.1.0间接
npmpath-exists4.0.0间接
npmpath-key3.1.1间接
npmpath-scurry1.11.1间接
npmpathe2.0.3间接
npmpend1.2.0间接
npmperformance-now2.1.0间接
npmpicocolors1.1.1间接
npmpicomatch4.0.4间接
npmplaywright1.61.1间接
npmplaywright-core1.61.1间接
npmpngjs7.0.0间接
npmpostcss8.5.16间接
npmprelude-ls1.2.1间接
npmprocess0.11.10间接
npmprocess-nextick-args2.0.1间接
npmproper-lockfile4.1.2间接
npmproto-list1.2.4间接
npmproto3-json-serializer3.0.4间接
npmprotobufjs7.6.4间接
npmprotoc-gen-ts0.8.7间接
npmpump3.0.4间接
npmpunycode2.3.1间接
npmpupa3.3.0间接
npmqs6.15.3间接
npmquick-lru5.1.1间接
npmrc1.2.8间接
npmread-package-up11.0.0间接
npmread-pkg9.0.1间接
npmreadable-stream2.3.8间接
npmreadable-stream3.6.2间接
npmreadable-stream4.7.0间接
npmreaddir-glob1.1.3间接
npmreconnecting-websocket4.4.0间接
npmregistry-auth-token5.1.1间接
npmregistry-url6.0.1间接
npmrequire-directory2.1.1间接
npmrequire-from-string2.0.2间接
npmresolve-alpn1.2.1间接
npmresponselike2.0.1间接
npmresponselike3.0.0间接
npmretry0.12.0间接
npmretry-request8.0.3间接
npmrfc46481.5.4间接
npmrimraf5.0.10间接
npmroarr2.15.4间接
npmrolldown1.1.4间接
npmsafe-buffer5.1.2间接
npmsafe-buffer5.2.1间接
npmsafe-stable-stringify2.5.0间接
npmsaxes6.0.0间接
npmsemver5.7.2间接
npmsemver7.8.5间接
npmsemver-compare1.0.0间接
npmsemver-diff4.0.0间接
npmsemver-regex3.1.4间接
npmsemver-sort1.0.0间接
npmserialize-error7.0.1间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmside-channel1.1.1间接
npmside-channel-list1.0.1间接
npmside-channel-map1.0.1间接
npmside-channel-weakmap1.0.2间接
npmsiginfo2.0.0间接
npmsignal-exit3.0.7间接
npmsignal-exit4.1.0间接
npmsimple-git3.36.0间接
npmsirv3.0.2间接
npmslice-ansi4.0.0间接
npmsmart-buffer4.2.0间接
npmsocks2.8.9间接
npmsocks-proxy-agent8.0.5间接
npmsource-map0.6.1间接
npmsource-map-js1.2.1间接
npmspdx-correct3.2.0间接
npmspdx-exceptions2.5.0间接
npmspdx-expression-parse3.0.1间接
npmspdx-license-ids3.0.23间接
npmsprintf-js1.0.3间接
npmsprintf-js1.1.3间接
npmstack-trace0.0.10间接
npmstackback0.0.2间接
npmstd-env4.1.0间接
npmstream-buffers3.0.3间接
npmstream-events1.0.5间接
npmstream-shift1.0.3间接
npmstreamx2.28.0间接
npmstrict-event-emitter0.1.0间接
npmstring-width4.2.3间接
npmstring-width5.1.2间接
npmstring_decoder1.1.1间接
npmstring_decoder1.3.0间接
npmstrip-ansi6.0.1间接
npmstrip-ansi7.2.0间接
npmstrip-final-newline2.0.0间接
npmstrip-json-comments2.0.1间接
npmstubs3.0.0间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsymbol-tree3.2.4间接
npmtable6.9.0间接
npmtar-fs3.1.3间接
npmtar-stream3.2.0间接
npmteeny-request10.1.3间接
npmteex1.0.1间接
npmtemp-dir3.0.0间接
npmtempfile5.0.0间接
npmtext-decoder1.2.7间接
npmtext-hex1.0.0间接
npmtinybench2.9.0间接
npmtinyexec1.2.4间接
npmtinyglobby0.2.17间接
npmtinyrainbow3.1.0间接
npmtldts7.4.5间接
npmtldts-core7.4.5间接
npmtmp0.2.7间接
npmtotalist3.0.1间接
npmtough-cookie6.0.1间接
npmtr460.0.3间接
npmtr466.0.0间接
npmtree-kill1.2.2间接
npmtriple-beam1.4.1间接
npmtslib2.8.1间接
npmtype-check0.4.0间接
npmtype-fest0.13.1间接
npmtype-fest1.4.0间接
npmtype-fest2.19.0间接
npmtype-fest4.41.0间接
npmtypedarray-to-buffer3.1.5间接
npmuglify-js3.19.3间接
npmundici-types7.18.2间接
npmunicorn-magic0.1.0间接
npmunique-string3.0.0间接
npmupdate-notifier6.0.2间接
npmuri-js4.4.1间接
npmurl-template2.0.8间接
npmutil-deprecate1.0.2间接
npmuuid11.1.1间接
npmvalidate-npm-package-license3.0.4间接
npmvite8.1.2间接
npmvitest4.1.9间接
npmw3c-xmlserializer5.0.0间接
npmweb-streams-polyfill3.3.3间接
npmwebidl-conversions3.0.1间接
npmwebidl-conversions8.0.1间接
npmwhatwg-mimetype3.0.0间接
npmwhatwg-mimetype4.0.0间接
npmwhatwg-mimetype5.0.0间接
npmwhatwg-url15.1.0间接
npmwhatwg-url5.0.0间接
npmwhich2.0.2间接
npmwhy-is-node-running2.3.0间接
npmwidest-line4.0.1间接
npmwindows-release5.1.1间接
npmwinston3.19.0间接
npmwinston-transport4.9.0间接
npmword-wrap1.2.5间接
npmwordwrap1.0.0间接
npmwrap-ansi7.0.0间接
npmwrap-ansi8.1.0间接
npmwrappy1.0.2间接
npmwrite-file-atomic3.0.3间接
npmws8.21.0间接
npmxdg-basedir5.1.0间接
npmxml-name-validator5.0.0间接
npmxmlchars2.2.0间接
npmy18n5.0.8间接
npmyargs17.7.3间接
npmyargs-parser21.1.1间接
npmyauzl3.4.0间接
npmyocto-queue0.1.0间接
npmzip-stream6.0.1间接
PyPImkdocs-material间接
依赖安全公告 0

安装 npm:showdown@2.1.0 会引入 1 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

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

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

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [
        "showdown",
        "javascript",
        "markdown",
        "markdown-parser",
        "markdown-flavors",
        "gfm",
        "html",
        "converter",
        "html-converter"
      ],
      "is_fork": false,
      "size_kb": 9769,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "HTML": 182172,
        "JavaScript": 727348
      },
      "pushed_at": "2026-07-20T04:30:41Z",
      "created_at": "2008-11-13T21:39:21Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-20T02:01:18Z",
      "description": "A bidirectional Markdown to HTML to Markdown converter written in Javascript",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "HTML"
      ]
    },
    "owner": {
      "blog": null,
      "name": "ShowdownJS",
      "type": "Organization",
      "login": "showdownjs",
      "company": null,
      "location": null,
      "followers": 34,
      "avatar_url": "https://avatars.githubusercontent.com/u/2754978?v=4",
      "created_at": "2012-11-09T00:45:02Z",
      "is_verified": null,
      "public_repos": 14,
      "account_age_days": 5004
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "2.1.0",
          "kind": "minor",
          "published_at": "2022-04-21T00:32:33Z"
        },
        {
          "tag": "2.0.4",
          "kind": "patch",
          "published_at": "2022-04-21T00:22:07Z"
        },
        {
          "tag": "2.0.3",
          "kind": "patch",
          "published_at": "2022-03-08T09:44:59Z"
        },
        {
          "tag": "2.0.0",
          "kind": "major",
          "published_at": "2022-02-16T04:03:03Z"
        },
        {
          "tag": "2.0.0-alpha",
          "kind": "prerelease",
          "published_at": "2022-02-02T04:42:24Z"
        },
        {
          "tag": "1.9.1",
          "kind": "patch",
          "published_at": "2019-11-02T23:32:02Z"
        },
        {
          "tag": "1.9.0",
          "kind": "minor",
          "published_at": "2018-11-10T23:33:24Z"
        },
        {
          "tag": "1.8.7",
          "kind": "patch",
          "published_at": "2018-10-16T22:35:10Z"
        },
        {
          "tag": "1.8.6",
          "kind": "patch",
          "published_at": "2017-12-22T10:44:46Z"
        },
        {
          "tag": "1.8.5",
          "kind": "patch",
          "published_at": "2017-12-11T13:56:30Z"
        },
        {
          "tag": "1.8.4",
          "kind": "patch",
          "published_at": "2017-12-05T01:19:05Z"
        },
        {
          "tag": "1.8.3",
          "kind": "patch",
          "published_at": "2017-11-28T03:11:48Z"
        },
        {
          "tag": "1.8.2",
          "kind": "patch",
          "published_at": "2017-11-11T13:36:02Z"
        },
        {
          "tag": "1.8.1",
          "kind": "patch",
          "published_at": "2017-11-01T20:34:38Z"
        },
        {
          "tag": "1.8.0",
          "kind": "minor",
          "published_at": "2017-10-24T16:17:41Z"
        },
        {
          "tag": "1.7.6",
          "kind": "patch",
          "published_at": "2017-10-06T11:57:21Z"
        },
        {
          "tag": "1.7.5",
          "kind": "patch",
          "published_at": "2017-10-02T04:25:53Z"
        },
        {
          "tag": "1.7.4",
          "kind": "patch",
          "published_at": "2017-09-08T19:53:51Z"
        },
        {
          "tag": "1.7.3",
          "kind": "patch",
          "published_at": "2017-08-23T21:58:23Z"
        },
        {
          "tag": "1.7.2",
          "kind": "patch",
          "published_at": "2017-08-05T00:52:56Z"
        },
        {
          "tag": "1.7.1",
          "kind": "patch",
          "published_at": "2017-06-02T02:33:48Z"
        },
        {
          "tag": "1.7.0",
          "kind": "minor",
          "published_at": "2017-06-01T01:49:07Z"
        },
        {
          "tag": "1.6.4",
          "kind": "patch",
          "published_at": "2017-05-01T17:39:14Z"
        },
        {
          "tag": "1.6.3",
          "kind": "patch",
          "published_at": "2017-01-30T22:42:52Z"
        },
        {
          "tag": "1.6.2",
          "kind": "patch",
          "published_at": "2017-01-29T23:34:04Z"
        },
        {
          "tag": "1.6.1",
          "kind": "patch",
          "published_at": "2017-01-28T02:51:33Z"
        },
        {
          "tag": "1.6.0",
          "kind": "minor",
          "published_at": "2017-01-09T02:41:23Z"
        },
        {
          "tag": "1.5.5",
          "kind": "patch",
          "published_at": "2017-01-06T04:29:02Z"
        },
        {
          "tag": "1.5.4",
          "kind": "patch",
          "published_at": "2016-12-21T09:07:55Z"
        },
        {
          "tag": "1.5.2",
          "kind": "patch",
          "published_at": "2016-12-17T05:32:44Z"
        },
        {
          "tag": "1.5.1",
          "kind": "patch",
          "published_at": "2016-12-01T15:44:24Z"
        },
        {
          "tag": "1.5.0",
          "kind": "minor",
          "published_at": "2016-11-11T08:58:13Z"
        },
        {
          "tag": "1.4.4",
          "kind": "patch",
          "published_at": "2016-11-02T21:18:27Z"
        },
        {
          "tag": "1.4.3",
          "kind": "patch",
          "published_at": "2016-11-02T16:36:22Z"
        },
        {
          "tag": "1.4.2",
          "kind": "patch",
          "published_at": "2016-06-21T01:27:00Z"
        },
        {
          "tag": "1.4.1",
          "kind": "patch",
          "published_at": "2016-05-17T20:37:37Z"
        },
        {
          "tag": "1.4.0",
          "kind": "minor",
          "published_at": "2016-05-13T15:34:55Z"
        },
        {
          "tag": "1.3.0",
          "kind": "minor",
          "published_at": "2015-10-19T02:29:53Z"
        },
        {
          "tag": "1.2.3",
          "kind": "patch",
          "published_at": "2015-08-27T04:28:01Z"
        },
        {
          "tag": "1.2.2",
          "kind": "patch",
          "published_at": "2015-08-02T15:10:33Z"
        },
        {
          "tag": "1.2.1",
          "kind": "patch",
          "published_at": "2015-07-22T17:50:02Z"
        },
        {
          "tag": "1.2.0",
          "kind": "minor",
          "published_at": "2015-07-13T20:36:20Z"
        },
        {
          "tag": "1.1.0",
          "kind": "minor",
          "published_at": "2015-06-18T00:28:12Z"
        },
        {
          "tag": "1.0.2",
          "kind": "patch",
          "published_at": "2015-05-28T23:43:57Z"
        },
        {
          "tag": "1.0.1",
          "kind": "patch",
          "published_at": "2015-05-27T22:52:54Z"
        },
        {
          "tag": "1.0.0",
          "kind": "major",
          "published_at": "2015-05-27T22:53:49Z"
        },
        {
          "tag": "0.5.4",
          "kind": "patch",
          "published_at": "2015-05-27T15:07:04Z"
        },
        {
          "tag": "0.5.3",
          "kind": "patch",
          "published_at": "2015-05-27T02:01:42Z"
        },
        {
          "tag": "1.0.0-alpha.2",
          "kind": "prerelease",
          "published_at": "2015-05-15T21:36:54Z"
        },
        {
          "tag": "1.0.0-alpha1",
          "kind": "prerelease",
          "published_at": "2015-05-14T02:07:04Z"
        },
        {
          "tag": "0.5.1",
          "kind": "patch",
          "published_at": "2015-05-13T21:47:44Z"
        },
        {
          "tag": "0.5.0",
          "kind": "minor",
          "published_at": "2015-04-22T14:47:22Z"
        },
        {
          "tag": "0.3.4",
          "kind": "patch",
          "published_at": "2015-01-06T16:14:14Z"
        },
        {
          "tag": "0.3.3",
          "kind": "patch",
          "published_at": "2015-01-05T00:46:07Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e5cab1e9a5dcea2bb3cbf888863fa7e65ab37edf",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into master",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-05T00:17:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c987270ca80ee7f7b43fb896856b9a52ec640c30",
          "body": "…c path\n\nOn the CommonMark (cmSpec) inline path, `<www.google.com>` was escaped to\n`&lt;www.google.com&gt;` and then had its interior re-linked by the GFM\nsimplifiedAutoLink post-pass, producing the broken\n`&lt;<a>www.google.com</a>&gt;` (\"double-processing\").\n\nRecognize `<www...>` as a first-class \n[…]\nt); it mirrors Showdown's legacy flavor, which\nhas always linked it. Documented under docs/commonmark.md and docs/gfm.md\n\"Known differences\". The legacy path already behaved this way and is unchanged.",
          "is_bot": false,
          "headline": "fix(makehtml): stop double-processing <www...> autolinks on the cmSpe…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T23:50:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "34dbc93a5f12f5cdf522266233e341b2ef4ecf0c",
          "body": "Replace the opaque numeric SKIP set with per-case skips inside the switch,\neach carrying a trailing comment explaining why it is skipped. Renderer-only\nsections (Alerts/Math/Mermaid) are skipped at the section level since every\ncase in them is skipped and Vitest errors on an empty describe block.\n\nDrop cases 43 and 61 from the skip list: both are valid Thematic-breaks cases\nthat showdown renders correctly and were skipped under incorrect rationales.",
          "is_bot": false,
          "headline": "test(gfm): move skip reasons into the switch and drop bogus skips",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T18:47:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d814ceb853fd0811f8c845656ccef0adc23e4cdc",
          "body": "The table header-id parser honored both `tablesHeaderId` and a misspelled\n`tableHeaderId` alias, the latter kept for backwards compatibility with an\nold documentation typo. Remove the alias so table header ids are controlled\nsolely by the documented `tablesHeaderId` option.\n\nBREAKING CHANGE: the undocumented `tableHeaderId` option (a legacy\nmisspelling of `tablesHeaderId`) is no longer recognized. Code relying on the\nmisspelling must switch to `tablesHeaderId`.",
          "is_bot": false,
          "headline": "refactor(options)!: drop the misspelled tableHeaderId option alias",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T18:45:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35a67a44977bdb82885d38a586c3e8ac5c222353",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into master",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T18:26:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a7c5ed55f3d37c1bc87c3093dcce7ea33106850",
          "body": "…olarity\n\nAdd the missing `introduced in: 3.0.0` line to the headerIds options\nreference (every other option carries one), and clarify in the flavors table\nnote that the `headerIds` row has inverted polarity: headerIds is an object\n(default `{}`, ids enabled) rather than a boolean, so a checkmark there means\nthe flavor sets `headerIds: false` to disable ids.",
          "is_bot": false,
          "headline": "docs(options): add headerIds introduced-in and clarify flavor-table p…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T18:26:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a56eaf0df474e152456d68f4fa394a288b5b9ec",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into master",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T18:00:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c42c7512b566f0a430885e640e86867e8d3f03b9",
          "body": "Consolidate the three overlapping header-id options (noHeaderId,\nprefixHeaderId, rawHeaderId) into one `headerIds` option that accepts either\n`false` or an object `{ prefix, raw }`. This removes their ambiguous\ninteraction and fixes the incorrect type metadata on the former\nprefixHeaderId (declared \n[…]\nderIds: { raw: true }\n  rawHeaderId + prefix   ->  headerIds: { prefix: '/p/', raw: true }\n\nOn the CLI, use `-c headerIds=false` or a JSON object, e.g.\n-c 'headerIds={\"prefix\":\"section-\",\"raw\":true}'.",
          "is_bot": false,
          "headline": "feat(options)!: replace header-id options with a single headerIds option",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T12:45:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea1f592e762be1f010d75fd0f11a6b1dff275029",
          "body": "The gfm/github flavor now enables disallowRawHTML by default, applying the\nGFM \"disallowed raw HTML\" tagfilter extension (spec section 6.11): raw\n<title>/<textarea>/<style>/<xmp>/<iframe>/<noembed>/<noframes>/<script>/\n<plaintext> tags are escaped in output, matching cmark-gfm/GitHub rendering.\n\nDrops the dedicated opt-in converter from the gfm testsuite (the main\nconverter now covers the tagfilter cases) and skips the inherited CommonMark\nHTML-block cases that assume raw passthrough.",
          "is_bot": false,
          "headline": "feat(options): enable GFM tagfilter (disallowRawHTML) in the gfm flavor",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-04T00:50:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0aadfdc31361a50c0d1de6fabad35b2a872cbfd",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into master",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T23:29:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bc9b5d638058c9e5d0bd6b202ab07f305f91f88",
          "body": "…ode wording\n\nDirect reporters to GitHub private vulnerability reporting instead of public\nissues, add an acknowledgement/disclosure note, fix a typo, and correct the\nsafeMode description (it escapes a blacklist of dangerous tags and neutralizes\nevent-handler and dangerous-URL attributes — including form actions — not\n\"all raw HTML tags\").",
          "is_bot": false,
          "headline": "docs(security): use private vulnerability reporting and correct safeM…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T23:28:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdf7e01701ced5b3b1c461156b16109c112e2a84",
          "body": "…ted-link ReDoS\n\n- safeMode: assert dangerous hrefs are neutralized regardless of separator\n  (`<a/href>`, `<a id=\"x\"href>`, `<a id='x'href>`, `<area/href>`) and that raw\n  `<input formaction=\"javascript:…\">` is neutralized while safe values survive.\n- ReDoS suite: add balanced nested link/image scaling cases.\n- Stress suite: add safemode-malformed snapshots for the separator and\n  form-action inputs.",
          "is_bot": false,
          "headline": "test(makehtml): cover attribute-separator/formaction bypasses and nes…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T23:28:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32527831b15e0b39209b21f20b1cf0f3bbc2ce91",
          "body": "…d-link ReDoS\n\nsafeMode raw-HTML hardening:\n- Neutralize dangerous URL schemes in raw HTML regardless of the attribute\n  separator: browsers accept `/` and quote-adjacent attributes\n  (`<a/href=…>`, `<a id=\"x\"href=…>`), which the whitespace-only matcher missed.\n- Extend the raw-URL neutralizer from \n[…]\nunded `.*?`/`.*`\ncaptures that re-scanned from every `[`. Bounding them to exclude their own\ndelimiters (matching the sibling inline/image regexes) makes it linear with no\nchange to real link parsing.",
          "is_bot": false,
          "headline": "fix(makehtml): close safeMode raw-attribute bypasses and legacy neste…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T23:28:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "16629be7d4ea28952d4290d26f5b3c1b315b67be",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into master",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T22:55:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d82fb105f407d080b1b058ccfe6faab1d22e7ae5",
          "body": "Add overrides for tmp (^0.2.7) and uuid (^11.1.1) to clear the high\npath-traversal and moderate buffer-bounds advisories pulled in\ntransitively through browserstack-node-sdk (tmp, and uuid via\ngaxios/googleapis-common/googleapis). npm audit now reports 0\nvulnerabilities and the BrowserStack suite still passes.",
          "is_bot": false,
          "headline": "fix(deps): resolve npm audit vulnerabilities via overrides",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T22:55:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6101bfef94addbbbe8c5f6daf6be057114330012",
          "body": null,
          "is_bot": false,
          "headline": ".",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T22:00:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7cc50f9dafc07296c82be8dc5d59f1c1e63bf27",
          "body": "Document the new `safeMode` option in the options reference and README,\nclarify that `disallowRawHTML` is only the narrow GFM tagfilter, and expand\nthe XSS/SECURITY guidance (trusted-input model, DOMPurify + CSP, input-size\nbounds, and the always-on hardening) for rendering untrusted Markdown.",
          "is_bot": false,
          "headline": "docs: document safeMode and the security hardening",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T18:26:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc0088b1078969b1549baa2027a8365b4e50a724",
          "body": "Pin all third-party actions to a commit SHA (with a version comment), add an\nexplicit least-privilege `permissions:` block to every workflow, add a\nproduction-only `npm audit` gate to the Linux CI job, and add a Dependabot\nconfig for npm and github-actions updates. Build the docs webhook payload with\n`jq` instead of shell string interpolation.",
          "is_bot": false,
          "headline": "ci: harden GitHub Actions workflows",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T18:26:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "003bf117116f826cbd115edccc132e663322e1f6",
          "body": "Add a ReDoS resistance suite (test/unit/showdown.redos.js) that feeds large\npathological inputs through makeHtml under a wall-clock budget, so a\nreintroduced quadratic parser fails instead of completing in milliseconds.\n\nAdd a stress snapshot suite (test/functional/makehtml/testsuite.stress.js and\nc\n[…]\n-case regressions.\n\nAlso add unit coverage for safeMode, isSafeUrl, the metadata/attribute\nencoding and the makeMarkdown round-trip, plus functional ReDoS fixtures, and\na `test:functional` npm script.",
          "is_bot": false,
          "headline": "test(makehtml): add ReDoS and stress regression testsuites",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T18:25:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "184a3e4e97f90e075c4512f2c4c06dcf655e91b7",
          "body": "… ReDoS\n\nAdd a new `safeMode` option (default off) providing defense-in-depth for\nuntrusted Markdown: an opt-in URL-scheme allowlist that neutralizes\n`javascript:`/`vbscript:`/`data:text/html` in generated and raw links/images\n(resolving entity/whitespace/`>`-in-attribute obfuscations, keeping\n`data\n[…]\notnote and raw-HTML-span parsers, and replace the\nper-span unhash loop with a single linear pass. All changes are behavior\npreserving; the link/image destination and HTML-span scanning are now linear.",
          "is_bot": false,
          "headline": "feat(makehtml): add safeMode and harden the converter against XSS and…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T18:25:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "adb88a92a1a7ecf01ca69425ddf6f9ff524928b9",
          "body": "Resolve the remaining 25 no-useless-escape warnings by dropping\nsuperfluous backslashes before /, [ and < where they have no effect\n(inside character classes or before non-special characters). The\nregex semantics are unchanged.\n\neslint now reports zero errors and zero warnings.",
          "is_bot": false,
          "headline": "refactor(lint): remove unnecessary escape characters from regex literals",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-02T00:06:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4e1144114a1536be9b02fe0bcfc6be46e0af184",
          "body": "Burn down 98 of the 123 warnings left non-blocking after the toolchain\nmodernization:\n\n- no-prototype-builtins: call Object.prototype.hasOwnProperty.call()\n  instead of accessing hasOwnProperty on arbitrary objects (51 sites)\n- no-useless-assignment: drop dead initializers and delete three dead\n  `u\n[…]\nCommonMark control-char classes, the\n  console polyfill, a deliberately unassigned test var)\n\nThe 25 remaining no-useless-escape warnings are left as-is: the regex\nliterals are deliberately untouched.",
          "is_bot": false,
          "headline": "refactor(lint): resolve eslint:recommended warnings in src and test",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T23:48:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6f0502a647339f102b1708170ec41c0363d54cf",
          "body": "makeMarkdown's DOM is now resolved on first use via a lazy getter on\nshowdown.helper.document: an ambient window/document when one exists\n(browsers, DOM test environments), otherwise require('happy-dom') in\nNode. Node consumers that only call makeHtml no longer load a DOM\nimplementation at all, and \n[…]\nt under a bare Node\nenvironment. happy-dom output was verified byte-identical to the jsdom\npath across headings, tables, task lists, blockquotes, nested lists,\nimage dimensions, fenced code and links.",
          "is_bot": false,
          "headline": "refactor(makemarkdown): replace jsdom with lazily-loaded happy-dom",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T23:07:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8ae112856c341e134fb34734c1df2c89286f6fc",
          "body": "…tion runs\n\nAlso refresh stale runtime dependency ranges (commander ^14, jsdom ^27)\npicked up in the same lockfile regeneration.",
          "is_bot": false,
          "headline": "test(browserstack): bump browserstack-node-sdk to 1.60 to fix integra…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T23:05:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ac75bd6fe8570e3605fcd3e0937ca3414623d1f",
          "body": "`npm run release -- --dry-run` runs the real validation (lint, build, all\ntests, perf) but only prints every state-changing step (checkout/merge/bump/\nchangelog/commit/tag/push/publish) instead of executing it, so a release can\nbe rehearsed without committing, tagging, pushing, or publishing. It skips the\nclean-tree guard (nothing is committed) and restores only the generated\nartifacts (dist/bin/perf) afterward.",
          "is_bot": false,
          "headline": "build: add --dry-run mode to the release task",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T22:55:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "221c213ece00cc6c57989611f33cd4ae8c76d2f1",
          "body": "This reverts commit fd23114f9467c48ae0cdcff8d2d1e33fd0fa8583.",
          "is_bot": false,
          "headline": "Revert \"chore(release): 3.0.0-rc3\"",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T21:38:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd23114f9467c48ae0cdcff8d2d1e33fd0fa8583",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 3.0.0-rc3",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T21:20:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b87a55a16bb1841499cf067d42a72acdf5cd0dc",
          "body": "Interactive release script (scripts/release.mjs): lint, build, all tests\n(node + each browser engine), performance, prompt for version, rebuild +\nregenerate changelog, commit/tag/push, then optionally npm publish\n(prereleases -> `next` dist-tag).\n\n- Any failing step aborts the whole release (reports\n[…]\nailed).\n- The release ALWAYS lands on master: validates the current branch, then\n  merges it into master, makes the release commit/tag there, and syncs the\n  working branch back so they don't diverge.",
          "is_bot": false,
          "headline": "build: add guarded `npm run release` task",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T20:23:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14fc2c11936b46f2ac94d0d4bab1c3c307eb22d7",
          "body": "The changelog generator prepended each new release with no separator, so\nthe newest section's last entry butted directly against the previous\nversion header. Replace the raw `conventional-changelog -s -i` call with\nscripts/changelog.mjs, which normalizes header spacing and always leaves two\nblank lines between the new section and the previous one. Also fix the\nexisting 3.0.0-rc2 / 3.0.0-rc1 seam.",
          "is_bot": false,
          "headline": "docs(changelog): fix section spacing and make it automatic",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T19:22:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4daa1a629cbc4dd6c717852d020fff0943b4034d",
          "body": "Bump to 3.0.0-rc2, regenerate CHANGELOG, and rebuild dist/bin.\n\nAlso restores changelog + perf tooling dropped during the toolchain\nmodernization: conventional-changelog-cli (npm run changelog) and\nsemver-sort (used by the performance suite).",
          "is_bot": false,
          "headline": "chore(release): 3.0.0-rc2",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T04:22:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27c9338c8ae68bde0f9e69529f24de057c1e5964",
          "body": "Trigger the BrowserStack smoke job on pull_request (master, develop) and on\npush to master, plus manual dispatch. Guard the job so it skips fork PRs,\nwhere secrets (BrowserStack creds) are withheld by GitHub.",
          "is_bot": false,
          "headline": "ci(browserstack): run on PRs and master merges, skip fork PRs",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:51:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5f6c4b811082def1bb44baa3b5dce21de1a2add3",
          "body": "Documentation restructure: sectioned nav, per-flavor Markdown Syntax pages,\nmerged Options page, CLI/event-system fixes, and theme overrides.",
          "is_bot": false,
          "headline": "Merge branch 'docs-refactor' into develop",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:50:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3097850e0f9e2664b0e327aecb5edddc584d46fe",
          "body": "Reorganize the docs site around clearer top-level sections and fix\ncorrectness/link issues throughout.\n\nNavigation & structure:\n- Merge Home subpages into a single Introduction; move Compatibility there.\n- New \"Markdown Syntax\" tab: Overview (shared common syntax) + one page per\n  flavor (Original, \n[…]\nhe >=9.4 API and\n  pin it via docs/requirements.txt.\n- overrides/partials/nav.html so the drawer title can differ from the header.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: restructure documentation",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:50:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c06d0a0f4e8ea59190f14b8cf573fab314fc5993",
          "body": "Untrack the SDK's log/ artifacts (events.json, performance-report/) that\nwere accidentally committed, and ignore the directory.",
          "is_bot": false,
          "headline": "chore: gitignore browserstack-node-sdk log/ output",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c259fd544266cde88b0f59cf704e1c550ee750d",
          "body": "…k-node-sdk\n\nAdds a small @playwright/test smoke suite (makeHtml/makeMarkdown sanity\nchecks) that injects the built UMD bundle with addScriptTag — no localhost\nserver, so no BrowserStack Local tunnel is needed. Driven by\nbrowserstack-node-sdk against a 4-platform matrix (Win11 Chrome/Edge/Firefox\n+ \n[…]\n\n- tidy eslint test globals (drop chai/expect/getDefaultOpts); ignore\n  playwright artifacts\n\nNote: the SDK pulls googleapis, adding dev-only audit findings; production\ndeps stay at 0 vulnerabilities.",
          "is_bot": false,
          "headline": "test(browserstack): add gated real-device smoke suite via browserstac…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:47:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "25b518ef7c0af6f955f49aae9020c21c08bce734",
          "body": "Migrate the whole test suite off chai to Vitest's native expect (~400\nassertions across 28 files) and replace the Karma browser runner with\nVitest browser mode (Playwright: chromium/firefox/webkit).\n\n- virtual:showdown Vite plugin runs tests against live src/ (no build\n  artifact); node suite uses t\n[…]\nrowser.yml CI (per-engine matrix); node CI now runs vitest\n- BrowserStack deferred to a follow-up (Playwright-connect approach)\n\nnpm test: 2367 node specs; test:browser: 480 per engine; 0 audit vulns.",
          "is_bot": false,
          "headline": "test: replace Karma+chai with Vitest (node jsdom + Playwright browser)",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T03:28:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8bc836825f8f64dc5c0a285df2cc1aeb04c744aa",
          "body": "Move eslint and @eslint/js from 9 to 10 (the correct resolution of the\nearlier @eslint/js@10-vs-eslint@9 peer conflict — both up, not one down).\n\nEnable eslint:recommended plus eqeqeq as warnings so the correctness issues\nthey surface (~128, mostly no-prototype-builtins / no-useless-escape in the\nre\n[…]\nused-vars / no-fallthrough) are\nvisible without gating CI; to be burned down after the toolchain\nmodernization. Formatting rules stay errors; no-undef stays off for the\nshared-scope src concatenation.",
          "is_bot": false,
          "headline": "build: upgrade to ESLint 10 and surface recommended rules as warnings",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T02:29:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5a8c464a9531191bb5a21baf043cd49a905df5b4",
          "body": "Consolidate the two legacy linters (JSHint + eslintrc-based ESLint, run via\nGrunt) into a single ESLint 9 flat config:\n\n- eslint.config.mjs ports the .eslintrc.json rules verbatim; the formatting\n  rules move under @stylistic (deprecated in ESLint core v9). No\n  eslint:recommended, so the enforced r\n[…]\n's\n  lint-before-test behavior.\n- helpers.js: retarget the one inline disable to @stylistic/space-infix-ops\n  and drop the dead jshint pragmas.\n\nnpm test (lint + 2367 mocha specs) green; npm ci clean.",
          "is_bot": false,
          "headline": "build: replace JSHint and legacy ESLint with ESLint 9 flat config",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T01:39:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd938cf5827d47e76c167eca7f17f3fa29f51560",
          "body": "Remove Grunt and its plugin tree (concat/uglify/endline/jshint/eslint/\nmocha-test + loaders) in favor of small Node build scripts driven by npm:\n\n- scripts/concat.mjs           shared, deterministic src concat (sorted globs)\n- scripts/build.mjs            release build via esbuild: UMD (dist/showdow\n[…]\n(11 -> 5 dev-only audit findings; 0 in production).\nNode CI matrix drops EOL 18; BrowserStack build step uses npm run build:test.\nThe Mocha suite and the Karma browser matrix are unchanged this phase.",
          "is_bot": false,
          "headline": "build: replace Grunt toolchain with esbuild + npm scripts",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T01:32:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "184a0f28384ff9bbe84eff88100a3d8d5f7e3d1f",
          "body": "A regenerated lockfile floated the unpinned chai dependency to the\nESM-only 6.x, which ships no UMD browser bundle. karma-chai loads\nnode_modules/chai/chai.js as a <script>, so with chai 6 the file is\nabsent, window.chai is undefined, and every BrowserStack browser errors\nbefore running a single test. Restore the lockfile to chai 4.3.6 (which\nships the UMD bundle) to make the BrowserStack job green again.",
          "is_bot": false,
          "headline": "fix(deps): restore chai 4.3.6 lockfile to fix karma-chai in CI",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-07-01T01:08:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2eddba59188b2db1cec3d8ca4eb7ec6c00fab37",
          "body": "The mocha >= 8 browser bundle ships ES2018 syntax, so the suite can only\nrun on engines that support it. Drop pre-2018 browsers (Chrome 49,\nFirefox 45, Edge 15, Safari 10.1, IE) and pin the newest plus one\nprevious version per engine, with a Safari 13 floor for older-engine\nregression coverage.",
          "is_bot": false,
          "headline": "test(browserstack): modernize browser matrix to ES2018+ engines",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-30T23:54:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73e9e53902eae4d6a324c8ef4134ce978196a1ac",
          "body": "…attributes\n\nOn Windows, grunt.template.process() normalized concat/uglify banners and\nfooters to grunt.util.linefeed (\"\\r\\n\"), so dist/ and bin/ were generated with\nmixed line endings even though every src/ input is LF. Pin grunt.util.linefeed\nto \"\\n\" so the build emits byte-identical LF output on \n[…]\n matched the actual `3.0.0-rc1` version and capture(0) came back\nundefined. Accept the real `-rc1`/`-alpha2`/`-beta1` suffix form.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(build): force LF line endings in build output and enforce via git…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-30T15:48:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "71a64701115756e743f5ecf739d8abff60fef389",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): 3.0.0-rc1",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T10:04:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a13c13f9a42c711cf33de7f278cde141a536411",
          "body": null,
          "is_bot": false,
          "headline": "chore(build): bump version to 3.0.0-rc1 and rebuild dist",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T10:00:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1d508f1e99bf410190f635042da7d1f7486c24f",
          "body": "…tic blowup\n\nDeeply nested block quotes (`> > > ...` thousands deep) recurse once per level\nthrough blockGamut. In the default path this exhausted the call stack (uncaught\nRangeError); under cmSpec it blew up super-linearly (a ~2 KB input took minutes).\n\nRefuse to descend past a sane nesting depth, tracked via globals.blockquoteDepth;\nbeyond the limit the surplus `>` markers render as literal text. The deepest\nnesting in the entire test corpus is 3, so real documents are unaffected.",
          "is_bot": false,
          "headline": "fix(blockquote): cap nesting depth to avoid stack overflow and quadra…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T09:48:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "668871d73c66bc7af237d41d2fb32539ab2760b6",
          "body": "The fenced-code info string is emitted verbatim into the `class` attribute of\nthe generated `<code>` element. An info string such as `js\"onmouseover=\"alert(1)`\nclosed the attribute and injected an event handler (XSS) in the default converter.\n\nHTML-escape the language token (`\"`, `<`, `>`) before bu\n[…]\n (e.g. `&ouml;`) for the class; that pass re-escapes anything\ndecoding to `\"`/`<`/`>`, so a literal quote is neutralized in both default and\nCommonMark modes while legitimate languages are unaffected.",
          "is_bot": false,
          "headline": "fix(githubCodeBlock): escape info string in generated code class",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T09:48:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "718aadbbffe2c53c5b37668ef8f6fdf31e7c423d",
          "body": "The phase-1 reference pass replaced `[^id]` before inline parsing, so it\nwrongly linked references that should stay literal:\n\n- inside an inline code span (`` `[^1]` ``) — now protected with a linear,\n  ReDoS-safe code-span scanner before the reference replace (a back-tracking\n  regex here is catast\n[…]\n (`\\[^1]`) — skipped by counting preceding back-slashes, while\n  `\\[^1]` still links\n\nAdd forward regression cases and a round-tripping reverse fixture for the\ncode-span case, and document both rules.",
          "is_bot": false,
          "headline": "fix(footnotes): keep references in code spans and escaped refs literal",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T02:17:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "34e778775708d6143cab81240cc9c72597287871",
          "body": "Rework the GFM task-list event model and bring the commonmark list parser\nto event parity with the default one.\n\n- Namespace the shared checkbox renderer's events under\n  makehtml.list.taskListItem.checkbox.* (drop the stray top-level\n  makehtml.taskListItem.* events) and capture the full task line,\n[…]\natching makehtml.list.\n- Add task-list edge-case fixtures (inline/block mixes) checked against\n  cmark-gfm; skip the known loose-item rendering divergence.\n- Document the makehtml.list.* event family.",
          "is_bot": false,
          "headline": "refactor(makehtml): full-line task-list events and cmList event parity",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T01:55:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "04babdb212f0367a1d0d6ab83ed5c64cf3996a6a",
          "body": "A `<li>` containing only an `<input type=\"checkbox\">` with no following task\ntext was reversed to a bare `- [ ]`, which does not round-trip — `- [ ]` on its\nown is not a task list item and `makeHtml` would not render it back as a\ncheckbox. Require the checkbox to be followed by real content (an element\nsibling, or a non-whitespace text node) before emitting a `[ ]`/`[x]` marker;\notherwise the `<input>` is kept verbatim (`- <input type=\"checkbox\">`).",
          "is_bot": false,
          "headline": "fix(makemarkdown): keep a text-less checkbox list item as raw HTML",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T01:11:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78b6d49a1b2a9f2769972180dc89f5d42a999f91",
          "body": "…item\n\nA list item whose inline text was directly followed by a nested list rendered\nas `- a- b` because the sublist was glued onto the inline text instead of\nbreaking onto an indented new line. Insert a newline before a nested `<ul>` /\n`<ol>` child when the running item text does not already end with one, so the\nexisting indentation step tucks the sublist under the item (`- a` then\n`    - b`). Affects all tight nested lists, task lists included.",
          "is_bot": false,
          "headline": "fix(makemarkdown): start a nested list on its own line inside a list …",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T01:11:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15de710a8ebe61eccf3e5998a08a0c6695e9c0f8",
          "body": "…list item\n\nA `[ ]`/`[x]` marker is only a task list item in Markdown when it leads a list item, so reverse conversion now requires an enclosing `<li>` (tight or loose) before turning an `<input type=\"checkbox\">` into a marker. A naked checkbox at top level or inside a `<p>`/`<div>` is left as raw H\n[…]\n-list-item` class, so unstyled or hand-written list HTML is still recognised.\n\nAdds a fixture pair covering naked checkboxes alongside in-list ones, and documents the behaviour in html-to-markdown.md.",
          "is_bot": false,
          "headline": "fix(makemarkdown): only reverse a checkbox to a task marker inside a …",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T00:50:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd45463cb8c8200e00b32b446535bcff37d6aab8",
          "body": "…rsers\n\nExtract the duplicated `[ ]`/`[x]` checkbox rendering out of `makehtml.list` and `makehtml.cmList` into a single `makehtml.taskListItem` subparser, so the checkbox markup and its capture/hash events live in exactly one place.",
          "is_bot": false,
          "headline": "refactor(makehtml): share task-list checkbox renderer between list pa…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-29T00:50:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ec49d95966937b18a4e379dfed432aa1c726734",
          "body": "makeMarkdown now reverses footnotes when the `footnotes` option is enabled,\nkeeping the two directions symmetric:\n\n- <sup class=\"footnote-ref\"> becomes its [^id] reference (the label is\n  recovered from the #fn- href and percent-decoded)\n- <section class=\"footnotes\"> becomes the [^id]: ... definitio\n[…]\nrips back to the same HTML) plus a\nfeature-disabled fallback case, and document footnotes (both directions and\nthe option) in the options, markdown-syntax, html-to-markdown and\nspec-compliance guides.",
          "is_bot": false,
          "headline": "feat(makemarkdown): reverse GFM footnotes (HTML -> Markdown)",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T23:43:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2917ccf71b31704cf8fe5f1b9c954013caa1a7d3",
          "body": "Add option-gated HTML->Markdown reverses so emoji and ellipsis round-trip\nthrough a converter with the matching option enabled, mirroring the existing\nsymmetric handling for strikethrough, underline, tables, tasklists and image\ndimensions.\n\n- helpers: add cached `emojiReverse()` lookup (image src->c\n[…]\nji `<img>` src back to `:code:`,\n  otherwise fall through to normal image handling\n\nIncludes makemarkdown fixtures for both features (enabled and disabled\nfallback) and documents the reverse behavior.",
          "is_bot": false,
          "headline": "feat(makemarkdown): reverse emoji and ellipsis to markdown",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T23:25:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3056efcaf0bf3cae5d9383facd22cb5b42f6864f",
          "body": null,
          "is_bot": false,
          "headline": "refactor(tests): refactor test to json spec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T23:09:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9307a6c4cb694fa28a58cc167e8a9944b80a4609",
          "body": "Add a footnotes subparser implementing the cmark-gfm footnotes extension,\ngated behind a new `footnotes` option (off by default, enabled by the gfm\nflavor):\n\n- collect `[^id]: ...` definitions (4-space-indented multi-block bodies) and\n  replace `[^id]` references with numbered `<sup>` links in first\n[…]\nion class=\"footnotes\">` with\n  per-reference backrefs\n- labels are href-escaped and may not contain whitespace; a reference nested\n  inside a footnote body is resolved with the document-wide numbering",
          "is_bot": false,
          "headline": "feat(footnotes): add GFM footnotes support",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T23:08:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2ce6aa0b8c31fc7d9d353c3fee919c3c300ab9e",
          "body": null,
          "is_bot": false,
          "headline": "chroe(test): remove old commonmark.v29.testsuite.json suite",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T14:35:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0336b4c26ce142e5ca67a1373cc370db5534e447",
          "body": null,
          "is_bot": false,
          "headline": "chroe(cli-test): small modernization of cli test suite and code",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T14:07:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f34b753724d4d1b42dcdf596445eb833f544d87b",
          "body": "simplifiedAutoLink and ghMentions ran only as a post-pass on the serialized\ninline output, where emphasis spans are already hashed, so a bare URL or\n@-mention inside emphasis was never linked. Extract the two passes into\napplyGfmInlineLinks() and also run it on emphasis inner content before it is\nwrapped and hashed. Link and image text are deliberately left untouched, so\ntheir content is never autolinked.",
          "is_bot": false,
          "headline": "fix(autolinks): link URLs and mentions inside emphasis",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-28T14:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a76c3fb78f58852029e98583f59d6edaabdb9f34",
          "body": "Skip the Alerts, Math and Mermaid sections in the gfm suite. These are\nGitHub.com renderer features, not part of the GFM spec, so showdown does\nnot produce them. The Emoji shortcodes renderer case already works and is\nleft running.",
          "is_bot": false,
          "headline": "test(gfm): skip GitHub renderer-only cases",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T22:26:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fb992cd26631c108ec0410342630c80207ec7c6",
          "body": "An inline link or image whose angle-bracket destination contained a double\nquote could break out of the generated href/src attribute and inject\narbitrary attributes (e.g. ![a](<x\" onerror=alert(1) src=y>) yielded a live\nonerror handler). The URL was only escaped for `* _ : ~`, never `\"`.\n\nEscape `\"`\n[…]\nn before it is placed in the\nattribute, at both inline sinks. cmSpec flavors already percent-encode the\nURL, so this is a no-op there; it closes the hole for the default, vanilla\nand original flavors.",
          "is_bot": false,
          "headline": "fix(link,image): escape quotes in generated href/src",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T22:24:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2392f13aa0a3f68a0c41a25f9e701a3fd9cb187d",
          "body": "Implements the GFM \"disallowed raw HTML\" extension (tagfilter) behind a new\nopt-in `disallowRawHTML` option. When enabled, the leading `<` of a small\nblacklist of raw HTML tags (title, textarea, style, xmp, iframe, noembed,\nnoframes, script, plaintext) is escaped to `&lt;` in the output, neutralizin\n[…]\nut unchanged; it is documented in available-options.md and as a commented\nopt-in line in the gfm flavor. The two spec cases (1400/1500) are exercised in\nthe gfm suite via a dedicated opt-in converter.",
          "is_bot": false,
          "headline": "feat(disallowRawHTML): add GFM disallowed-raw-html tag filter",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T22:24:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e24ca0d9041607478bec47d5d00f870f93c79f79",
          "body": "- exclude a trailing entity-reference-like \"&name;\" from a URL autolink\n- stop a URL autolink at \"<\" (already escaped to \"&lt;\" by this pass)\n- percent-encode non-ASCII characters in the href; the display text keeps\n  the literal characters\n- recognise extended email autolinks: trim trailing punctua\n[…]\nhe host to contain\n  a dot; only \"www.\" autolinks are domain-validated\n\nAlso skip two non-applicable gfm cases: the \"<IGNORE>\" sentinel and the\n\"@a.b.c\" case that depends on a separate ghMentions fix.",
          "is_bot": false,
          "headline": "fix(autolinks): align GFM extended autolinks with the spec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T22:13:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "166af1fa8798111912741f72d2773cd457518ea6",
          "body": "Add a GitHub Flavored Markdown section describing the table-alignment markup\n(`style=\"text-align\"` instead of the `align` attribute) and the always\nemitted empty `<tbody>`.",
          "is_bot": false,
          "headline": "docs(spec-compliance): document GFM flavor deviations",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T13:12:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae03aa7df7810c53de0b97043dc7441d0f710bcd",
          "body": "Group the GFM extension cases under one canonical section per feature\n(e.g. `Tables (extension)`, `Footnotes (extension)`, `Math (GitHub\nrenderer)`) and move the descriptive suffixes into a `notes` field, since\nthe origin is already recorded in `source`. Also align the bare-URL and\nemail autolink expectations with the simplifiedAutoLink output.",
          "is_bot": false,
          "headline": "test(gfm): consolidate extension test sections",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T13:12:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b340b43e2966c0d01e2158b1d6bb89f96ca1333e",
          "body": "Recognise a run of one or two tildes (`~foo~` as well as `~~foo~~`), matched\nin length, rejecting runs of three or more and runs of mismatched length,\nwith delimiter flanking. The match no longer spans a blank line.\n\nBREAKING CHANGE: text wrapped in single tildes (`~foo~`) is now rendered as\n`<del>foo</del>`. Escape the tildes to keep them literal.",
          "is_bot": false,
          "headline": "feat(strikethrough): support single-tilde strikethrough",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T13:12:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94e0624ab807427309560af039815d1875be36e6",
          "body": "Task list items now render as the bare GFM form\n`<li><input disabled type=\"checkbox\"> text</li>` instead of carrying the\n`task-list-item` class and inline checkbox styles. The previous styled\noutput is preserved behind the `moreStyling` option.\n\nBREAKING CHANGE: by default task list items no longer include the\n`task-list-item` class, the `list-style-type` list style or the inline\ncheckbox margin style. Enable `moreStyling` to restore the previous output.",
          "is_bot": false,
          "headline": "feat(tasklists): emit GFM-compliant task list markup",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T13:11:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92990a14ff41c6527d4661d4d5fd53c876ab6040",
          "body": "- accept single-dash delimiter columns (e.g. `:-:`, `| - |`) in both the\n  multi- and single-column matchers\n- recognise a single-column table whose delimiter row omits the leading\n  pipe (`| a |` over `--- |`)\n- require the header and delimiter rows to contain the same number of\n  cells; a mismatch\n[…]\nBREAKING CHANGE: a table whose header and delimiter rows have a different\nnumber of cells (e.g. `| a | b |` over `| --- |`) is no longer recognised\nas a table and renders as a paragraph, matching GFM.",
          "is_bot": false,
          "headline": "fix(table): align table parsing with the GFM spec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T13:11:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9fc09ec49051f89b9384be699f52728a0955bd20",
          "body": null,
          "is_bot": false,
          "headline": "fix malformed json",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T00:28:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fea8be7776f49b3fac306189b6a974bf38ab7273",
          "body": null,
          "is_bot": false,
          "headline": "compliance(gfm): begin gfm compliance imporvement",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T00:26:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d2a8d07725ed0740797090012be08158fc53c84",
          "body": null,
          "is_bot": false,
          "headline": "test(commonark): bump commonmark.testsuite.json version to latest",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T00:04:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "17b16b7cd05f5f569fa283d02b86f3dc064e4fb4",
          "body": "…zy setext underlines\n\n- githubCodeBlock: allow backticks/tildes in a tilde fence's info string while\n  keeping the opening fence maximal, and reject backtick fences whose info string\n  contains a backtick (spec example 146).\n- blockquote: a setext underline that is a lazy continuation line no longer turns\n  the preceding paragraph into a heading inside a block quote (spec example 93).\n- test: enable commonmark examples 93 and 146 and normalize 146's language class.",
          "is_bot": false,
          "headline": "fix(makehtml): comply with CommonMark fenced-code info strings and la…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-27T00:03:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae1d54774c5b75f9155e3d40e8a793e70198d543",
          "body": "# Conflicts:\n#\tsrc/subParsers/makehtml/link.js",
          "is_bot": false,
          "headline": "Merge branch '922-commonmark-compliance' into develop",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:49:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f842e55c7d24f13dedffb1b823e7f6e377806ae",
          "body": null,
          "is_bot": false,
          "headline": "docs: remove COMMONMARK-PROGRESS.md dev-notes file",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:37:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c05d7421099b39b090ff239a3121988cd693bd8",
          "body": null,
          "is_bot": false,
          "headline": "chore(dist): rebuild dist and bin",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:33:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d7294dc96fe927a8f839503868438e5290fb993",
          "body": "Under cmSpec, spanGamut ran strikethrough/emoji and then encodeAmpsAndAngles\nwithout hashing the raw HTML they emit, so strikethrough's <del> and\nimage-based emoji's <img> had their </> escaped to &lt;/&gt;. Add the\nhashHTMLSpans pass before encodeAmpsAndAngles (mirroring the legacy branch)\nto prote\n[…]\n now hashes its own <img> output\nbecause the generic span hashing skips void tags under cmSpec.\n\nOutput now matches the legacy path. Adds cmSpec-strikethrough and\ncmSpec-emoji-img regression fixtures.",
          "is_bot": false,
          "headline": "fix(cmSpec): stop escaping generated HTML from strikethrough and emoji",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:28:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a661d0d2d342c41e65f246c4abba580b39931a1",
          "body": "smoothLivePreview was defined in the options but never read by any\nsubparser, so it had no effect. Remove it.\n\nBREAKING CHANGE: the smoothLivePreview option is removed. It was a no-op\n(unimplemented), so passing it had no effect; remove it from any config.",
          "is_bot": false,
          "headline": "refactor(options): remove the dead smoothLivePreview option",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:18:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4d7050f894bf73d0319ca169e302b96710a5787",
          "body": "Spawn the CLI with a color-free base environment so an inherited\nFORCE_COLOR (e.g. from an IDE test runner) no longer makes assertions\nfail on unexpected ANSI codes; explicit per-test env still wins.\n\nMove the file-output tests off the shared .build/ scratch dir into a\nthrowaway temp directory and assert the spawn succeeded before reading\nresults back, removing the read-before-write races that surfaced as\nflaky ENOENT failures.",
          "is_bot": false,
          "headline": "test(cli): make CLI tests deterministic and isolate file output",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T01:14:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7cad47e7317a89f4c4904515128298f5f8b2235",
          "body": "underline now runs before cmInline in the cmSpec branch (claiming __/___\nas <u> and escaping remaining underscores, mirroring the legacy order\nrelative to emphasis); underline.js also resolves an escaped \\_ to the\nescape placeholder so it works before backslash escapes are otherwise\nprocessed. cmLis\n[…]\nt GFM extras) and which are ignored because cmSpec replaces\nthe parser they tweak (literalMidWordUnderscores,\ndisableForced4SpacesIndentedSublists, splitAdjacentBlockquotes,\nbackslashEscapesHTMLTags).",
          "is_bot": false,
          "headline": "feat(cmSpec): support underline and GFM task lists under cmSpec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T00:49:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e7ee79f3e25cc4e7789cf44c9e0777d00d26146",
          "body": "parseCmLinkDefinitions now captures =WxH into globals.gDimensions and\ncmInline's reference-image branch reads it, so ![a][r] + [r]: x =WxH\nrenders width/height under cmSpec, matching the inline and legacy paths.",
          "is_bot": false,
          "headline": "feat(cmSpec): support reference-style image dimensions under cmSpec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T00:25:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e4efe7b1ca9e026a1de286f32250e32fbdbad39",
          "body": null,
          "is_bot": false,
          "headline": ".",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T00:20:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1200139e5aeb4c4f6c1410cec0440d8873baa26e",
          "body": "Make ghMentions, ghMentionsLink, simplifiedAutoLink, httpsAutoLinks,\nencodeEmails and inline parseImgDimensions work when cmSpec is on, by\nextending cmInline (the parallel CommonMark inline path), which previously\nbypassed link.js/image.js and silently ignored them. ghMentions and\nsimplifiedAutoLink\n[…]\napes in cmInline to emit Showdown escape\nplaceholders for ordinary punctuation, so escaped chars (e.g. \\@mention,\n\\~, \\*) are not re-processed by the GFM/inline post-passes - matching\nthe legacy path.",
          "is_bot": false,
          "headline": "feat(cmSpec): support GFM link/image options under cmSpec",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-23T00:20:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb28a68dcae4c8ca5080c9863b822e59321244f1",
          "body": "Inline images always rendered =WxH dimensions regardless of the\nparseImgDimensions option; only reference-style definitions respected it\n(image.js never read the option). Gate inline width/height on the option,\nconsistent with the reference path: the =WxH syntax is still consumed but\nthe attributes are dropped when the option is off.",
          "is_bot": false,
          "headline": "fix(image): honor parseImgDimensions for inline images",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T23:16:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a74eec87b4917805bd81d24f69eb38819a4fa82",
          "body": "A glob in the path portion of a pattern (e.g. `**/`, `src/*/`) now reports\nthat recursive/multi-level globs are unsupported instead of silently\nmatching nothing, and passing a directory as input reports \"is a directory,\nnot a file\" with a glob hint instead of a raw EISDIR error.",
          "is_bot": false,
          "headline": "fix(cli): clearer messages for recursive globs and directory inputs",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T23:10:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fdcca9056a1c2fb8b3edcf45081c76134fcfc9b",
          "body": "…tput\n\nBatch output previously only recognised an output directory that already\nexisted, so `-o out/` failed with \"is not a directory\" and a single\n`-o nodir/` silently created a file named `nodir`.\n\nNow a path ending in a separator (or an existing directory) is treated as\ndirectory output, the dire\n[…]\nissing, and a single input\ncan be written into a directory the same way. Writing stdin to a directory\nis rejected with a clear message since there is no source name to derive\nthe output filename from.",
          "is_bot": false,
          "headline": "fix(cli): create batch output directories and honor trailing-slash ou…",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T21:56:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc1d451ee0338643ca1490cc2e0f11f3af2e560e",
          "body": null,
          "is_bot": false,
          "headline": ".",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T21:45:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e758f4f6ed51db1d0eccae52c60e8a524f2adc6",
          "body": "Each assertion in the CLI suite spawns a `node` subprocess, which under\nfull-suite CPU load can exceed mocha's 3s default timeout and fail\nintermittently. Give the suite a 15s timeout so the spawns have room.",
          "is_bot": false,
          "headline": "test(cli): raise timeout for the spawn-based CLI suite",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T03:19:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e7acea15e92ab45451f5b61ffe1e949690ba6a7",
          "body": "strikethrough now defaults to true, so ~~text~~ renders as <del> without\nopt-in. It is on for the vanilla and github flavors; the spec-oriented\noriginal (Gruber) and commonmark flavors disable it explicitly. Removed the\nnow-redundant strikethrough override from the github preset.\n\nBREAKING CHANGE: s\n[…]\n.~~ renders as <del>...</del>, and the reverse\ndirection converts <del>/<s> back to ~~. Set strikethrough: false to restore\nthe previous behavior. The original and commonmark flavors keep it disabled.",
          "is_bot": false,
          "headline": "feat(options): enable strikethrough by default",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T02:23:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9be4b3c397e84cc18b0c260204975b9d69de260e",
          "body": "Both makehtml and makemarkdown now accept multiple inputs and glob\npatterns, and gain a verbose level plus colorized messages. No new\ndependencies.\n\n- Input (-i) is variadic and accepts glob patterns. Shell-expanded\n  globs keep working; a built-in single-level matcher (* and ?) covers\n  Windows and\n[…]\never colored.\n- Refactor the Messenger helper to an options object and route option\n  warnings through a dedicated warning channel.\n\nDocs updated for multi-input/glob, batch output, verbose and color.",
          "is_bot": false,
          "headline": "feat(cli): add batch/glob input, verbose mode and colored output",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T01:35:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4c6a237a5fd2cab2388ceed8854f7e3638e4c267",
          "body": "A filter that returns nothing no longer empties the output; since lang/output\nextensions run as event listeners, the transformation is silently skipped and\nthe text passes through unchanged.",
          "is_bot": false,
          "headline": "docs(extensions): correct stale filter return-value warning",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T01:18:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8affebd26426b06eb55a82c42726327c53f7bdd9",
          "body": "Document a listener-extension replacement in docs/event-system.md\n(a makehtml.link.*.onCapture listener that sets target/rel).\n\nBREAKING CHANGE: the openLinksInNewWindow option is removed. Use a\nlistener extension on makehtml.link.*.onCapture to add target/rel\nattributes to anchors instead (see docs/event-system.md).",
          "is_bot": false,
          "headline": "fix(options): remove the openLinksInNewWindow option",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T01:16:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d42617e748c13c5314417c1e9bfc2761d0f5e7a",
          "body": null,
          "is_bot": false,
          "headline": "docs(api-reference): document showdown.getFlavors()",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T00:23:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e03db9df89af23ef78cdc4c0fb7799feb415028",
          "body": "Add `mochaTest:commonmark` to the default `test` task so the CommonMark\nspec compliance suite gates the build alongside the unit and functional\nsuites. The suite runs against the committed\n`cases/commonmark.testsuite.json` fixture; regenerating that fixture\nstays in the dedicated `test-commonmark` task.",
          "is_bot": false,
          "headline": "test: run the CommonMark spec suite as part of grunt test",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T00:06:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4d8dd4fdd04938e7b3c17894eb930bc31bf57e8",
          "body": "Convert `var` to block-scoped `let`/`const` across the makemarkdown\nsubparsers, the converter, the CLI and other core modules, and swap the\ndeprecated `String.prototype.substr()` calls for `slice()` equivalents.\nAlso drop a redundant local in the ATX heading parser and add a few IDE\ninspection hints. No behavioral change.",
          "is_bot": false,
          "headline": "refactor: modernize var declarations and replace deprecated substr()",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-22T00:06:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43f10580f2b82d205dbc8fa0be8e734ad7c5b49c",
          "body": "The github flavor enabled simpleLineBreaks, turning every single newline\ninto a <br>. GitHub only does that in comment fields; when rendering\nmarkdown files it follows the GFM/CommonMark spec, where a soft line\nbreak is a space. Removing it from the preset makes the github flavor\nmatch the spec. The\n[…]\nNGE: the github flavor no longer enables simpleLineBreaks, so\nsingle newlines inside a paragraph are no longer rendered as <br>. Set\nsimpleLineBreaks: true explicitly to restore the previous behavior.",
          "is_bot": false,
          "headline": "fix(flavors): drop simpleLineBreaks from the github flavor",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T23:44:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "31db6ad3d3d10133172e0dddb4a58113eab3ddb3",
          "body": "lang/output extensions run as listeners on the document-level makehtml events,\nso the options passed to a filter is a read-only clone. Reading is unchanged;\nmutating it has no effect (which was never supported anyway).",
          "is_bot": false,
          "headline": "docs(extensions): note that filter options is now a read-only copy",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T23:43:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdda4f037df00d3e40010a298645771311670e00",
          "body": "Assert that every makehtml and makeMarkdown subparser emits its onStart event\nat least once across a feature-rich conversion. Guards against a subparser\nbeing added (or silently losing its event dispatch) without a corresponding\ntest; on failure the assertion lists the subparsers whose onStart never fired.",
          "is_bot": false,
          "headline": "test(events): add generic subparser event-coverage sweep",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T23:39:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d34629827ed2dc21ada71af05fdd58ec5906c05",
          "body": "…fire once\n\n- warn at most once per process per deprecated extension type (lang/output)\n  instead of once per extension load, via a module-scope guard in\n  _parseExtension\n- add event-firing tests for the previously-untested capture/hash events\n  makehtml.link.angleBrackets, makehtml.link.autoLink, \n[…]\nr \"events\" test block (which listened on\n  the removed .before/.after special events) with real tests that assert a\n  listener fires and can modify output, and that the removed events no longer\n  fire",
          "is_bot": false,
          "headline": "test(extensions): cover untested events and make deprecation warning …",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T23:27:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd7981b9d82d3253ee0a3665fa5664c21544c663",
          "body": null,
          "is_bot": false,
          "headline": ".",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T12:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9bf1fdd00020a37be6b81bdc976061b19ed22842",
          "body": "# Conflicts:\n#\tsrc/subParsers/makehtml/link.js",
          "is_bot": false,
          "headline": "Merge branch 'develop' of github.com:showdownjs/showdown into develop",
          "author_name": "Estêvão Soares dos Santos",
          "author_login": "tivie",
          "committed_at": "2026-06-21T12:07:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 54,
      "commits_last_year": 188,
      "latest_release_at": "2022-04-21T00:32:33Z",
      "latest_release_tag": "2.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 5,
      "days_since_latest_release": 1554,
      "mean_days_between_releases": 176.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "showdown",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "markdown",
            "converter"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/showdown",
          "is_deprecated": false,
          "latest_version": "2.1.0",
          "repository_url": "https://github.com/showdownjs/showdown",
          "versions_count": 62,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 5622437,
          "first_published_at": "2011-04-12T02:19:21.530000Z",
          "latest_published_at": "2022-04-21T00:33:05.614000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1554
        }
      ]
    },
    "popularity": {
      "forks": 1568,
      "stars": 14873,
      "watchers": 184,
      "fork_history": {
        "days": [
          {
            "date": "2016-08-25",
            "count": 1
          },
          {
            "date": "2016-08-28",
            "count": 1
          },
          {
            "date": "2016-09-01",
            "count": 2
          },
          {
            "date": "2016-09-09",
            "count": 1
          },
          {
            "date": "2016-09-18",
            "count": 1
          },
          {
            "date": "2016-09-19",
            "count": 1
          },
          {
            "date": "2016-09-23",
            "count": 1
          },
          {
            "date": "2016-09-24",
            "count": 1
          },
          {
            "date": "2016-09-26",
            "count": 2
          },
          {
            "date": "2016-09-27",
            "count": 1
          },
          {
            "date": "2016-10-11",
            "count": 1
          },
          {
            "date": "2016-10-12",
            "count": 2
          },
          {
            "date": "2016-10-14",
            "count": 1
          },
          {
            "date": "2016-10-15",
            "count": 1
          },
          {
            "date": "2016-10-16",
            "count": 1
          },
          {
            "date": "2016-10-17",
            "count": 1
          },
          {
            "date": "2016-10-21",
            "count": 1
          },
          {
            "date": "2016-10-22",
            "count": 1
          },
          {
            "date": "2016-10-25",
            "count": 2
          },
          {
            "date": "2016-10-27",
            "count": 1
          },
          {
            "date": "2016-10-28",
            "count": 1
          },
          {
            "date": "2016-11-01",
            "count": 1
          },
          {
            "date": "2016-11-05",
            "count": 1
          },
          {
            "date": "2016-11-09",
            "count": 1
          },
          {
            "date": "2016-11-10",
            "count": 1
          },
          {
            "date": "2016-11-16",
            "count": 1
          },
          {
            "date": "2016-11-19",
            "count": 1
          },
          {
            "date": "2016-11-23",
            "count": 1
          },
          {
            "date": "2016-11-28",
            "count": 1
          },
          {
            "date": "2016-11-29",
            "count": 1
          },
          {
            "date": "2016-12-01",
            "count": 1
          },
          {
            "date": "2016-12-05",
            "count": 1
          },
          {
            "date": "2016-12-06",
            "count": 2
          },
          {
            "date": "2016-12-08",
            "count": 1
          },
          {
            "date": "2016-12-11",
            "count": 1
          },
          {
            "date": "2016-12-12",
            "count": 2
          },
          {
            "date": "2016-12-19",
            "count": 1
          },
          {
            "date": "2016-12-21",
            "count": 1
          },
          {
            "date": "2016-12-30",
            "count": 1
          },
          {
            "date": "2017-01-02",
            "count": 1
          },
          {
            "date": "2017-01-03",
            "count": 1
          },
          {
            "date": "2017-01-10",
            "count": 1
          },
          {
            "date": "2017-01-12",
            "count": 1
          },
          {
            "date": "2017-01-14",
            "count": 1
          },
          {
            "date": "2017-01-17",
            "count": 2
          },
          {
            "date": "2017-01-18",
            "count": 1
          },
          {
            "date": "2017-01-20",
            "count": 1
          },
          {
            "date": "2017-01-23",
            "count": 1
          },
          {
            "date": "2017-01-25",
            "count": 1
          },
          {
            "date": "2017-01-26",
            "count": 1
          },
          {
            "date": "2017-01-28",
            "count": 1
          },
          {
            "date": "2017-02-05",
            "count": 1
          },
          {
            "date": "2017-02-07",
            "count": 1
          },
          {
            "date": "2017-02-08",
            "count": 1
          },
          {
            "date": "2017-02-14",
            "count": 2
          },
          {
            "date": "2017-02-16",
            "count": 2
          },
          {
            "date": "2017-02-17",
            "count": 1
          },
          {
            "date": "2017-02-19",
            "count": 1
          },
          {
            "date": "2017-02-20",
            "count": 2
          },
          {
            "date": "2017-02-24",
            "count": 1
          },
          {
            "date": "2017-03-03",
            "count": 1
          },
          {
            "date": "2017-03-04",
            "count": 1
          },
          {
            "date": "2017-03-06",
            "count": 1
          },
          {
            "date": "2017-03-09",
            "count": 1
          },
          {
            "date": "2017-03-10",
            "count": 1
          },
          {
            "date": "2017-03-13",
            "count": 3
          },
          {
            "date": "2017-03-14",
            "count": 2
          },
          {
            "date": "2017-03-16",
            "count": 1
          },
          {
            "date": "2017-03-22",
            "count": 1
          },
          {
            "date": "2017-03-24",
            "count": 1
          },
          {
            "date": "2017-03-26",
            "count": 1
          },
          {
            "date": "2017-03-28",
            "count": 2
          },
          {
            "date": "2017-03-29",
            "count": 1
          },
          {
            "date": "2017-03-30",
            "count": 1
          },
          {
            "date": "2017-04-01",
            "count": 1
          },
          {
            "date": "2017-04-03",
            "count": 1
          },
          {
            "date": "2017-04-08",
            "count": 1
          },
          {
            "date": "2017-04-09",
            "count": 1
          },
          {
            "date": "2017-04-10",
            "count": 1
          },
          {
            "date": "2017-04-12",
            "count": 1
          },
          {
            "date": "2017-04-20",
            "count": 1
          },
          {
            "date": "2017-04-26",
            "count": 1
          },
          {
            "date": "2017-04-28",
            "count": 1
          },
          {
            "date": "2017-05-02",
            "count": 1
          },
          {
            "date": "2017-05-07",
            "count": 1
          },
          {
            "date": "2017-05-12",
            "count": 1
          },
          {
            "date": "2017-05-14",
            "count": 1
          },
          {
            "date": "2017-05-25",
            "count": 1
          },
          {
            "date": "2017-06-01",
            "count": 1
          },
          {
            "date": "2017-06-02",
            "count": 1
          },
          {
            "date": "2017-06-03",
            "count": 1
          },
          {
            "date": "2017-06-04",
            "count": 1
          },
          {
            "date": "2017-06-13",
            "count": 1
          },
          {
            "date": "2017-06-19",
            "count": 1
          },
          {
            "date": "2017-06-22",
            "count": 2
          },
          {
            "date": "2017-06-23",
            "count": 1
          },
          {
            "date": "2017-06-25",
            "count": 1
          },
          {
            "date": "2017-06-27",
            "count": 1
          },
          {
            "date": "2017-06-28",
            "count": 2
          },
          {
            "date": "2017-07-03",
            "count": 1
          },
          {
            "date": "2017-07-08",
            "count": 1
          },
          {
            "date": "2017-07-10",
            "count": 3
          },
          {
            "date": "2017-07-11",
            "count": 1
          },
          {
            "date": "2017-07-12",
            "count": 2
          },
          {
            "date": "2017-07-13",
            "count": 1
          },
          {
            "date": "2017-07-17",
            "count": 1
          },
          {
            "date": "2017-07-18",
            "count": 2
          },
          {
            "date": "2017-07-19",
            "count": 1
          },
          {
            "date": "2017-07-24",
            "count": 1
          },
          {
            "date": "2017-07-25",
            "count": 1
          },
          {
            "date": "2017-07-28",
            "count": 1
          },
          {
            "date": "2017-07-31",
            "count": 2
          },
          {
            "date": "2017-08-04",
            "count": 1
          },
          {
            "date": "2017-08-07",
            "count": 1
          },
          {
            "date": "2017-08-08",
            "count": 1
          },
          {
            "date": "2017-08-10",
            "count": 1
          },
          {
            "date": "2017-08-15",
            "count": 2
          },
          {
            "date": "2017-08-18",
            "count": 2
          },
          {
            "date": "2017-08-21",
            "count": 2
          },
          {
            "date": "2017-08-22",
            "count": 1
          },
          {
            "date": "2017-08-24",
            "count": 1
          },
          {
            "date": "2017-08-25",
            "count": 3
          },
          {
            "date": "2017-08-31",
            "count": 1
          },
          {
            "date": "2017-09-05",
            "count": 1
          },
          {
            "date": "2017-09-06",
            "count": 1
          },
          {
            "date": "2017-09-08",
            "count": 1
          },
          {
            "date": "2017-09-12",
            "count": 2
          },
          {
            "date": "2017-09-17",
            "count": 1
          },
          {
            "date": "2017-09-22",
            "count": 1
          },
          {
            "date": "2017-09-27",
            "count": 2
          },
          {
            "date": "2017-09-28",
            "count": 1
          },
          {
            "date": "2017-09-30",
            "count": 1
          },
          {
            "date": "2017-10-01",
            "count": 1
          },
          {
            "date": "2017-10-07",
            "count": 1
          },
          {
            "date": "2017-10-10",
            "count": 1
          },
          {
            "date": "2017-10-14",
            "count": 1
          },
          {
            "date": "2017-10-17",
            "count": 1
          },
          {
            "date": "2017-10-18",
            "count": 1
          },
          {
            "date": "2017-10-19",
            "count": 1
          },
          {
            "date": "2017-10-20",
            "count": 2
          },
          {
            "date": "2017-10-25",
            "count": 2
          },
          {
            "date": "2017-11-01",
            "count": 1
          },
          {
            "date": "2017-11-08",
            "count": 1
          },
          {
            "date": "2017-11-10",
            "count": 1
          },
          {
            "date": "2017-11-11",
            "count": 1
          },
          {
            "date": "2017-11-14",
            "count": 1
          },
          {
            "date": "2017-11-16",
            "count": 1
          },
          {
            "date": "2017-11-19",
            "count": 1
          },
          {
            "date": "2017-11-20",
            "count": 1
          },
          {
            "date": "2017-11-21",
            "count": 2
          },
          {
            "date": "2017-11-24",
            "count": 1
          },
          {
            "date": "2017-11-29",
            "count": 1
          },
          {
            "date": "2017-11-30",
            "count": 1
          },
          {
            "date": "2017-12-06",
            "count": 2
          },
          {
            "date": "2017-12-07",
            "count": 1
          },
          {
            "date": "2017-12-08",
            "count": 2
          },
          {
            "date": "2017-12-10",
            "count": 1
          },
          {
            "date": "2017-12-12",
            "count": 1
          },
          {
            "date": "2017-12-15",
            "count": 1
          },
          {
            "date": "2017-12-18",
            "count": 1
          },
          {
            "date": "2017-12-20",
            "count": 1
          },
          {
            "date": "2017-12-23",
            "count": 1
          },
          {
            "date": "2017-12-27",
            "count": 1
          },
          {
            "date": "2018-01-03",
            "count": 1
          },
          {
            "date": "2018-01-06",
            "count": 1
          },
          {
            "date": "2018-01-09",
            "count": 1
          },
          {
            "date": "2018-01-12",
            "count": 1
          },
          {
            "date": "2018-01-13",
            "count": 1
          },
          {
            "date": "2018-01-14",
            "count": 1
          },
          {
            "date": "2018-01-22",
            "count": 1
          },
          {
            "date": "2018-01-24",
            "count": 1
          },
          {
            "date": "2018-01-25",
            "count": 3
          },
          {
            "date": "2018-01-27",
            "count": 1
          },
          {
            "date": "2018-01-28",
            "count": 1
          },
          {
            "date": "2018-01-29",
            "count": 1
          },
          {
            "date": "2018-01-31",
            "count": 1
          },
          {
            "date": "2018-02-01",
            "count": 2
          },
          {
            "date": "2018-02-02",
            "count": 1
          },
          {
            "date": "2018-02-05",
            "count": 1
          },
          {
            "date": "2018-02-06",
            "count": 1
          },
          {
            "date": "2018-02-08",
            "count": 1
          },
          {
            "date": "2018-02-12",
            "count": 1
          },
          {
            "date": "2018-02-13",
            "count": 1
          },
          {
            "date": "2018-02-22",
            "count": 1
          },
          {
            "date": "2018-02-23",
            "count": 1
          },
          {
            "date": "2018-02-25",
            "count": 1
          },
          {
            "date": "2018-02-28",
            "count": 1
          },
          {
            "date": "2018-03-07",
            "count": 2
          },
          {
            "date": "2018-03-09",
            "count": 2
          },
          {
            "date": "2018-03-10",
            "count": 1
          },
          {
            "date": "2018-03-11",
            "count": 1
          },
          {
            "date": "2018-03-12",
            "count": 4
          },
          {
            "date": "2018-03-25",
            "count": 1
          },
          {
            "date": "2018-03-26",
            "count": 1
          },
          {
            "date": "2018-03-27",
            "count": 2
          },
          {
            "date": "2018-03-28",
            "count": 1
          },
          {
            "date": "2018-03-29",
            "count": 1
          },
          {
            "date": "2018-04-03",
            "count": 2
          },
          {
            "date": "2018-04-04",
            "count": 1
          },
          {
            "date": "2018-04-05",
            "count": 1
          },
          {
            "date": "2018-04-06",
            "count": 2
          },
          {
            "date": "2018-04-08",
            "count": 1
          },
          {
            "date": "2018-04-10",
            "count": 3
          },
          {
            "date": "2018-04-11",
            "count": 1
          },
          {
            "date": "2018-04-12",
            "count": 2
          },
          {
            "date": "2018-04-13",
            "count": 2
          },
          {
            "date": "2018-04-15",
            "count": 1
          },
          {
            "date": "2018-04-17",
            "count": 1
          },
          {
            "date": "2018-04-18",
            "count": 1
          },
          {
            "date": "2018-04-20",
            "count": 1
          },
          {
            "date": "2018-04-24",
            "count": 1
          },
          {
            "date": "2018-04-25",
            "count": 1
          },
          {
            "date": "2018-04-26",
            "count": 1
          },
          {
            "date": "2018-05-12",
            "count": 2
          },
          {
            "date": "2018-05-21",
            "count": 1
          },
          {
            "date": "2018-05-23",
            "count": 1
          },
          {
            "date": "2018-06-02",
            "count": 2
          },
          {
            "date": "2018-06-04",
            "count": 1
          },
          {
            "date": "2018-06-05",
            "count": 2
          },
          {
            "date": "2018-06-08",
            "count": 2
          },
          {
            "date": "2018-06-09",
            "count": 1
          },
          {
            "date": "2018-06-11",
            "count": 1
          },
          {
            "date": "2018-06-12",
            "count": 1
          },
          {
            "date": "2018-06-13",
            "count": 1
          },
          {
            "date": "2018-06-14",
            "count": 1
          },
          {
            "date": "2018-06-15",
            "count": 1
          },
          {
            "date": "2018-06-23",
            "count": 1
          },
          {
            "date": "2018-06-26",
            "count": 1
          },
          {
            "date": "2018-06-27",
            "count": 1
          },
          {
            "date": "2018-06-28",
            "count": 1
          },
          {
            "date": "2018-06-30",
            "count": 1
          },
          {
            "date": "2018-07-03",
            "count": 3
          },
          {
            "date": "2018-07-04",
            "count": 2
          },
          {
            "date": "2018-07-10",
            "count": 1
          },
          {
            "date": "2018-07-11",
            "count": 1
          },
          {
            "date": "2018-07-15",
            "count": 1
          },
          {
            "date": "2018-07-24",
            "count": 1
          },
          {
            "date": "2018-07-25",
            "count": 1
          },
          {
            "date": "2018-07-26",
            "count": 1
          },
          {
            "date": "2018-07-27",
            "count": 1
          },
          {
            "date": "2018-07-29",
            "count": 1
          },
          {
            "date": "2018-07-30",
            "count": 2
          },
          {
            "date": "2018-08-04",
            "count": 1
          },
          {
            "date": "2018-08-08",
            "count": 1
          },
          {
            "date": "2018-08-10",
            "count": 1
          },
          {
            "date": "2018-08-13",
            "count": 1
          },
          {
            "date": "2018-08-15",
            "count": 2
          },
          {
            "date": "2018-08-16",
            "count": 1
          },
          {
            "date": "2018-08-17",
            "count": 1
          },
          {
            "date": "2018-08-18",
            "count": 1
          },
          {
            "date": "2018-08-19",
            "count": 1
          },
          {
            "date": "2018-08-22",
            "count": 2
          },
          {
            "date": "2018-08-24",
            "count": 1
          },
          {
            "date": "2018-08-25",
            "count": 2
          },
          {
            "date": "2018-08-26",
            "count": 1
          },
          {
            "date": "2018-08-30",
            "count": 1
          },
          {
            "date": "2018-08-31",
            "count": 1
          },
          {
            "date": "2018-09-03",
            "count": 1
          },
          {
            "date": "2018-09-07",
            "count": 2
          },
          {
            "date": "2018-09-09",
            "count": 1
          },
          {
            "date": "2018-09-11",
            "count": 1
          },
          {
            "date": "2018-09-13",
            "count": 2
          },
          {
            "date": "2018-09-14",
            "count": 1
          },
          {
            "date": "2018-09-15",
            "count": 1
          },
          {
            "date": "2018-09-20",
            "count": 1
          },
          {
            "date": "2018-09-21",
            "count": 1
          },
          {
            "date": "2018-09-25",
            "count": 1
          },
          {
            "date": "2018-09-26",
            "count": 1
          },
          {
            "date": "2018-09-27",
            "count": 1
          },
          {
            "date": "2018-09-29",
            "count": 1
          },
          {
            "date": "2018-10-03",
            "count": 1
          },
          {
            "date": "2018-10-06",
            "count": 1
          },
          {
            "date": "2018-10-08",
            "count": 1
          },
          {
            "date": "2018-10-09",
            "count": 1
          },
          {
            "date": "2018-10-12",
            "count": 1
          },
          {
            "date": "2018-10-15",
            "count": 1
          },
          {
            "date": "2018-10-17",
            "count": 3
          },
          {
            "date": "2018-10-18",
            "count": 4
          },
          {
            "date": "2018-10-19",
            "count": 1
          },
          {
            "date": "2018-10-20",
            "count": 1
          },
          {
            "date": "2018-10-24",
            "count": 1
          },
          {
            "date": "2018-10-26",
            "count": 3
          },
          {
            "date": "2018-10-29",
            "count": 2
          },
          {
            "date": "2018-10-31",
            "count": 1
          },
          {
            "date": "2018-11-01",
            "count": 2
          },
          {
            "date": "2018-11-03",
            "count": 1
          },
          {
            "date": "2018-11-06",
            "count": 1
          },
          {
            "date": "2018-11-07",
            "count": 1
          },
          {
            "date": "2018-11-10",
            "count": 1
          },
          {
            "date": "2018-11-13",
            "count": 2
          },
          {
            "date": "2018-11-14",
            "count": 1
          },
          {
            "date": "2018-11-15",
            "count": 1
          },
          {
            "date": "2018-11-18",
            "count": 1
          },
          {
            "date": "2018-11-21",
            "count": 2
          },
          {
            "date": "2018-11-22",
            "count": 1
          },
          {
            "date": "2018-11-23",
            "count": 2
          },
          {
            "date": "2018-11-24",
            "count": 1
          },
          {
            "date": "2018-11-26",
            "count": 1
          },
          {
            "date": "2018-11-29",
            "count": 1
          },
          {
            "date": "2018-11-30",
            "count": 1
          },
          {
            "date": "2018-12-03",
            "count": 1
          },
          {
            "date": "2018-12-04",
            "count": 1
          },
          {
            "date": "2018-12-05",
            "count": 1
          },
          {
            "date": "2018-12-06",
            "count": 1
          },
          {
            "date": "2018-12-09",
            "count": 1
          },
          {
            "date": "2018-12-15",
            "count": 2
          },
          {
            "date": "2018-12-16",
            "count": 1
          },
          {
            "date": "2018-12-17",
            "count": 1
          },
          {
            "date": "2018-12-18",
            "count": 1
          },
          {
            "date": "2018-12-20",
            "count": 2
          },
          {
            "date": "2018-12-21",
            "count": 2
          },
          {
            "date": "2018-12-24",
            "count": 1
          },
          {
            "date": "2018-12-26",
            "count": 1
          },
          {
            "date": "2018-12-27",
            "count": 1
          },
          {
            "date": "2018-12-30",
            "count": 1
          },
          {
            "date": "2018-12-31",
            "count": 1
          },
          {
            "date": "2019-01-01",
            "count": 1
          },
          {
            "date": "2019-01-06",
            "count": 2
          },
          {
            "date": "2019-01-07",
            "count": 3
          },
          {
            "date": "2019-01-10",
            "count": 1
          },
          {
            "date": "2019-01-11",
            "count": 1
          },
          {
            "date": "2019-01-12",
            "count": 1
          },
          {
            "date": "2019-01-16",
            "count": 1
          },
          {
            "date": "2019-01-17",
            "count": 1
          },
          {
            "date": "2019-01-18",
            "count": 1
          },
          {
            "date": "2019-01-20",
            "count": 1
          },
          {
            "date": "2019-01-21",
            "count": 1
          },
          {
            "date": "2019-01-22",
            "count": 1
          },
          {
            "date": "2019-01-24",
            "count": 2
          },
          {
            "date": "2019-01-25",
            "count": 2
          },
          {
            "date": "2019-01-28",
            "count": 1
          },
          {
            "date": "2019-01-29",
            "count": 1
          },
          {
            "date": "2019-01-31",
            "count": 2
          },
          {
            "date": "2019-02-01",
            "count": 1
          },
          {
            "date": "2019-02-02",
            "count": 1
          },
          {
            "date": "2019-02-08",
            "count": 1
          },
          {
            "date": "2019-02-12",
            "count": 2
          },
          {
            "date": "2019-02-13",
            "count": 3
          },
          {
            "date": "2019-02-15",
            "count": 1
          },
          {
            "date": "2019-02-20",
            "count": 1
          },
          {
            "date": "2019-02-21",
            "count": 1
          },
          {
            "date": "2019-02-23",
            "count": 3
          },
          {
            "date": "2019-02-27",
            "count": 1
          },
          {
            "date": "2019-03-06",
            "count": 1
          },
          {
            "date": "2019-03-08",
            "count": 1
          },
          {
            "date": "2019-03-09",
            "count": 1
          },
          {
            "date": "2019-03-10",
            "count": 1
          },
          {
            "date": "2019-03-11",
            "count": 2
          },
          {
            "date": "2019-03-13",
            "count": 1
          },
          {
            "date": "2019-03-15",
            "count": 1
          },
          {
            "date": "2019-03-16",
            "count": 1
          },
          {
            "date": "2019-03-17",
            "count": 1
          },
          {
            "date": "2019-03-20",
            "count": 1
          },
          {
            "date": "2019-03-21",
            "count": 1
          },
          {
            "date": "2019-03-23",
            "count": 1
          },
          {
            "date": "2019-03-27",
            "count": 1
          },
          {
            "date": "2019-04-01",
            "count": 2
          },
          {
            "date": "2019-04-03",
            "count": 4
          },
          {
            "date": "2019-04-04",
            "count": 1
          },
          {
            "date": "2019-04-07",
            "count": 2
          },
          {
            "date": "2019-04-08",
            "count": 1
          },
          {
            "date": "2019-04-11",
            "count": 1
          },
          {
            "date": "2019-04-12",
            "count": 2
          },
          {
            "date": "2019-04-14",
            "count": 1
          },
          {
            "date": "2019-04-16",
            "count": 1
          },
          {
            "date": "2019-04-17",
            "count": 1
          },
          {
            "date": "2019-04-21",
            "count": 1
          },
          {
            "date": "2019-04-24",
            "count": 1
          },
          {
            "date": "2019-04-30",
            "count": 2
          },
          {
            "date": "2019-05-05",
            "count": 1
          },
          {
            "date": "2019-05-06",
            "count": 2
          },
          {
            "date": "2019-05-08",
            "count": 1
          },
          {
            "date": "2019-05-10",
            "count": 4
          },
          {
            "date": "2019-05-11",
            "count": 1
          },
          {
            "date": "2019-05-14",
            "count": 2
          },
          {
            "date": "2019-05-16",
            "count": 1
          },
          {
            "date": "2019-05-17",
            "count": 2
          },
          {
            "date": "2019-05-19",
            "count": 1
          },
          {
            "date": "2019-05-22",
            "count": 1
          },
          {
            "date": "2019-05-23",
            "count": 2
          },
          {
            "date": "2019-05-24",
            "count": 1
          },
          {
            "date": "2019-05-28",
            "count": 1
          },
          {
            "date": "2019-06-04",
            "count": 1
          },
          {
            "date": "2019-06-07",
            "count": 2
          },
          {
            "date": "2019-06-11",
            "count": 1
          },
          {
            "date": "2019-06-12",
            "count": 1
          },
          {
            "date": "2019-06-13",
            "count": 1
          },
          {
            "date": "2019-06-14",
            "count": 1
          },
          {
            "date": "2019-06-18",
            "count": 3
          },
          {
            "date": "2019-06-22",
            "count": 1
          },
          {
            "date": "2019-06-23",
            "count": 1
          },
          {
            "date": "2019-06-24",
            "count": 1
          },
          {
            "date": "2019-06-28",
            "count": 2
          },
          {
            "date": "2019-06-30",
            "count": 1
          },
          {
            "date": "2019-07-02",
            "count": 1
          },
          {
            "date": "2019-07-03",
            "count": 2
          },
          {
            "date": "2019-07-05",
            "count": 1
          },
          {
            "date": "2019-07-07",
            "count": 1
          },
          {
            "date": "2019-07-08",
            "count": 1
          },
          {
            "date": "2019-07-10",
            "count": 2
          },
          {
            "date": "2019-07-13",
            "count": 1
          },
          {
            "date": "2019-07-14",
            "count": 1
          },
          {
            "date": "2019-07-15",
            "count": 1
          },
          {
            "date": "2019-07-16",
            "count": 1
          },
          {
            "date": "2019-07-18",
            "count": 1
          },
          {
            "date": "2019-07-22",
            "count": 1
          },
          {
            "date": "2019-07-24",
            "count": 1
          },
          {
            "date": "2019-07-25",
            "count": 1
          },
          {
            "date": "2019-07-26",
            "count": 3
          },
          {
            "date": "2019-07-29",
            "count": 1
          },
          {
            "date": "2019-07-30",
            "count": 1
          },
          {
            "date": "2019-07-31",
            "count": 1
          },
          {
            "date": "2019-08-01",
            "count": 1
          },
          {
            "date": "2019-08-03",
            "count": 1
          },
          {
            "date": "2019-08-05",
            "count": 1
          },
          {
            "date": "2019-08-08",
            "count": 2
          },
          {
            "date": "2019-08-09",
            "count": 1
          },
          {
            "date": "2019-08-12",
            "count": 1
          },
          {
            "date": "2019-08-22",
            "count": 2
          },
          {
            "date": "2019-08-23",
            "count": 1
          },
          {
            "date": "2019-08-29",
            "count": 1
          },
          {
            "date": "2019-09-05",
            "count": 1
          },
          {
            "date": "2019-09-18",
            "count": 3
          },
          {
            "date": "2019-09-19",
            "count": 1
          },
          {
            "date": "2019-09-20",
            "count": 2
          },
          {
            "date": "2019-09-24",
            "count": 1
          },
          {
            "date": "2019-09-29",
            "count": 2
          },
          {
            "date": "2019-10-08",
            "count": 2
          },
          {
            "date": "2019-10-09",
            "count": 1
          },
          {
            "date": "2019-10-11",
            "count": 2
          },
          {
            "date": "2019-10-15",
            "count": 1
          },
          {
            "date": "2019-10-16",
            "count": 1
          },
          {
            "date": "2019-10-23",
            "count": 1
          },
          {
            "date": "2019-10-24",
            "count": 1
          },
          {
            "date": "2019-10-27",
            "count": 1
          },
          {
            "date": "2019-10-29",
            "count": 2
          },
          {
            "date": "2019-10-31",
            "count": 1
          },
          {
            "date": "2019-11-03",
            "count": 1
          },
          {
            "date": "2019-11-08",
            "count": 1
          },
          {
            "date": "2019-11-09",
            "count": 1
          },
          {
            "date": "2019-11-13",
            "count": 1
          },
          {
            "date": "2019-11-19",
            "count": 1
          },
          {
            "date": "2019-11-20",
            "count": 2
          },
          {
            "date": "2019-11-21",
            "count": 1
          },
          {
            "date": "2019-11-22",
            "count": 1
          },
          {
            "date": "2019-11-23",
            "count": 1
          },
          {
            "date": "2019-12-02",
            "count": 2
          },
          {
            "date": "2019-12-03",
            "count": 1
          },
          {
            "date": "2019-12-10",
            "count": 1
          },
          {
            "date": "2019-12-11",
            "count": 1
          },
          {
            "date": "2019-12-13",
            "count": 1
          },
          {
            "date": "2019-12-14",
            "count": 1
          },
          {
            "date": "2019-12-17",
            "count": 1
          },
          {
            "date": "2019-12-19",
            "count": 1
          },
          {
            "date": "2019-12-27",
            "count": 1
          },
          {
            "date": "2019-12-29",
            "count": 1
          },
          {
            "date": "2019-12-30",
            "count": 1
          },
          {
            "date": "2019-12-31",
            "count": 1
          },
          {
            "date": "2020-01-01",
            "count": 1
          },
          {
            "date": "2020-01-08",
            "count": 1
          },
          {
            "date": "2020-01-10",
            "count": 1
          },
          {
            "date": "2020-01-11",
            "count": 1
          },
          {
            "date": "2020-01-14",
            "count": 1
          },
          {
            "date": "2020-01-17",
            "count": 2
          },
          {
            "date": "2020-01-18",
            "count": 1
          },
          {
            "date": "2020-01-24",
            "count": 1
          },
          {
            "date": "2020-01-25",
            "count": 1
          },
          {
            "date": "2020-01-30",
            "count": 1
          },
          {
            "date": "2020-02-09",
            "count": 1
          },
          {
            "date": "2020-02-11",
            "count": 1
          },
          {
            "date": "2020-02-18",
            "count": 1
          },
          {
            "date": "2020-02-21",
            "count": 1
          },
          {
            "date": "2020-02-23",
            "count": 2
          },
          {
            "date": "2020-02-25",
            "count": 2
          },
          {
            "date": "2020-02-26",
            "count": 2
          },
          {
            "date": "2020-02-27",
            "count": 1
          },
          {
            "date": "2020-02-28",
            "count": 1
          },
          {
            "date": "2020-02-29",
            "count": 2
          },
          {
            "date": "2020-03-05",
            "count": 3
          },
          {
            "date": "2020-03-10",
            "count": 2
          },
          {
            "date": "2020-03-17",
            "count": 1
          },
          {
            "date": "2020-03-19",
            "count": 1
          },
          {
            "date": "2020-03-22",
            "count": 1
          },
          {
            "date": "2020-03-25",
            "count": 1
          },
          {
            "date": "2020-03-26",
            "count": 1
          },
          {
            "date": "2020-03-27",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-03-31",
            "count": 1
          },
          {
            "date": "2020-04-01",
            "count": 1
          },
          {
            "date": "2020-04-07",
            "count": 1
          },
          {
            "date": "2020-04-08",
            "count": 1
          },
          {
            "date": "2020-04-13",
            "count": 2
          },
          {
            "date": "2020-04-14",
            "count": 1
          },
          {
            "date": "2020-04-15",
            "count": 2
          },
          {
            "date": "2020-04-18",
            "count": 1
          },
          {
            "date": "2020-04-19",
            "count": 1
          },
          {
            "date": "2020-04-24",
            "count": 1
          },
          {
            "date": "2020-04-28",
            "count": 1
          },
          {
            "date": "2020-04-29",
            "count": 1
          },
          {
            "date": "2020-05-07",
            "count": 1
          },
          {
            "date": "2020-05-08",
            "count": 1
          },
          {
            "date": "2020-05-13",
            "count": 1
          },
          {
            "date": "2020-05-15",
            "count": 1
          },
          {
            "date": "2020-05-18",
            "count": 1
          },
          {
            "date": "2020-05-20",
            "count": 1
          },
          {
            "date": "2020-05-25",
            "count": 2
          },
          {
            "date": "2020-05-26",
            "count": 1
          },
          {
            "date": "2020-05-28",
            "count": 2
          },
          {
            "date": "2020-05-31",
            "count": 1
          },
          {
            "date": "2020-06-01",
            "count": 1
          },
          {
            "date": "2020-06-03",
            "count": 1
          },
          {
            "date": "2020-06-04",
            "count": 1
          },
          {
            "date": "2020-06-06",
            "count": 1
          },
          {
            "date": "2020-06-09",
            "count": 1
          },
          {
            "date": "2020-06-11",
            "count": 1
          },
          {
            "date": "2020-06-12",
            "count": 1
          },
          {
            "date": "2020-06-14",
            "count": 1
          },
          {
            "date": "2020-06-16",
            "count": 1
          },
          {
            "date": "2020-06-21",
            "count": 1
          },
          {
            "date": "2020-06-22",
            "count": 1
          },
          {
            "date": "2020-06-23",
            "count": 1
          },
          {
            "date": "2020-06-26",
            "count": 1
          },
          {
            "date": "2020-07-01",
            "count": 1
          },
          {
            "date": "2020-07-03",
            "count": 1
          },
          {
            "date": "2020-07-07",
            "count": 1
          },
          {
            "date": "2020-07-08",
            "count": 1
          },
          {
            "date": "2020-07-11",
            "count": 1
          },
          {
            "date": "2020-07-16",
            "count": 1
          },
          {
            "date": "2020-07-28",
            "count": 2
          },
          {
            "date": "2020-08-02",
            "count": 1
          },
          {
            "date": "2020-08-16",
            "count": 2
          },
          {
            "date": "2020-08-18",
            "count": 1
          },
          {
            "date": "2020-08-24",
            "count": 1
          },
          {
            "date": "2020-08-27",
            "count": 1
          },
          {
            "date": "2020-09-02",
            "count": 1
          },
          {
            "date": "2020-09-03",
            "count": 1
          },
          {
            "date": "2020-09-05",
            "count": 1
          },
          {
            "date": "2020-09-07",
            "count": 1
          },
          {
            "date": "2020-09-20",
            "count": 1
          },
          {
            "date": "2020-09-22",
            "count": 2
          },
          {
            "date": "2020-09-25",
            "count": 1
          },
          {
            "date": "2020-10-01",
            "count": 1
          },
          {
            "date": "2020-10-30",
            "count": 1
          },
          {
            "date": "2020-11-02",
            "count": 1
          },
          {
            "date": "2020-11-03",
            "count": 1
          },
          {
            "date": "2020-11-04",
            "count": 1
          },
          {
            "date": "2020-11-05",
            "count": 1
          },
          {
            "date": "2020-11-06",
            "count": 1
          },
          {
            "date": "2020-11-09",
            "count": 1
          },
          {
            "date": "2020-11-12",
            "count": 1
          },
          {
            "date": "2020-11-19",
            "count": 2
          },
          {
            "date": "2020-11-27",
            "count": 1
          },
          {
            "date": "2020-12-03",
            "count": 1
          },
          {
            "date": "2020-12-04",
            "count": 1
          },
          {
            "date": "2020-12-05",
            "count": 2
          },
          {
            "date": "2020-12-10",
            "count": 1
          },
          {
            "date": "2020-12-24",
            "count": 1
          },
          {
            "date": "2020-12-30",
            "count": 1
          },
          {
            "date": "2021-01-03",
            "count": 2
          },
          {
            "date": "2021-01-04",
            "count": 1
          },
          {
            "date": "2021-01-05",
            "count": 1
          },
          {
            "date": "2021-01-09",
            "count": 1
          },
          {
            "date": "2021-01-17",
            "count": 1
          },
          {
            "date": "2021-01-22",
            "count": 1
          },
          {
            "date": "2021-01-25",
            "count": 2
          },
          {
            "date": "2021-01-31",
            "count": 1
          },
          {
            "date": "2021-02-08",
            "count": 2
          },
          {
            "date": "2021-02-09",
            "count": 1
          },
          {
            "date": "2021-02-22",
            "count": 1
          },
          {
            "date": "2021-02-23",
            "count": 2
          },
          {
            "date": "2021-02-24",
            "count": 1
          },
          {
            "date": "2021-02-27",
            "count": 1
          },
          {
            "date": "2021-03-02",
            "count": 1
          },
          {
            "date": "2021-03-03",
            "count": 1
          },
          {
            "date": "2021-03-04",
            "count": 1
          },
          {
            "date": "2021-03-05",
            "count": 2
          },
          {
            "date": "2021-03-07",
            "count": 1
          },
          {
            "date": "2021-03-11",
            "count": 1
          },
          {
            "date": "2021-03-14",
            "count": 1
          },
          {
            "date": "2021-03-20",
            "count": 1
          },
          {
            "date": "2021-04-01",
            "count": 1
          },
          {
            "date": "2021-04-06",
            "count": 1
          },
          {
            "date": "2021-04-09",
            "count": 1
          },
          {
            "date": "2021-04-14",
            "count": 2
          },
          {
            "date": "2021-04-15",
            "count": 1
          },
          {
            "date": "2021-04-18",
            "count": 1
          },
          {
            "date": "2021-05-04",
            "count": 1
          },
          {
            "date": "2021-05-09",
            "count": 1
          },
          {
            "date": "2021-05-18",
            "count": 1
          },
          {
            "date": "2021-05-19",
            "count": 1
          },
          {
            "date": "2021-05-21",
            "count": 1
          },
          {
            "date": "2021-05-24",
            "count": 2
          },
          {
            "date": "2021-06-01",
            "count": 1
          },
          {
            "date": "2021-06-04",
            "count": 1
          },
          {
            "date": "2021-06-06",
            "count": 1
          },
          {
            "date": "2021-06-17",
            "count": 1
          },
          {
            "date": "2021-06-29",
            "count": 2
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-07-05",
            "count": 1
          },
          {
            "date": "2021-07-06",
            "count": 1
          },
          {
            "date": "2021-07-09",
            "count": 1
          },
          {
            "date": "2021-07-12",
            "count": 1
          },
          {
            "date": "2021-07-13",
            "count": 3
          },
          {
            "date": "2021-07-21",
            "count": 2
          },
          {
            "date": "2021-07-25",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 3
          },
          {
            "date": "2021-08-14",
            "count": 1
          },
          {
            "date": "2021-08-19",
            "count": 1
          },
          {
            "date": "2021-08-21",
            "count": 2
          },
          {
            "date": "2021-08-27",
            "count": 1
          },
          {
            "date": "2021-09-03",
            "count": 1
          },
          {
            "date": "2021-09-17",
            "count": 1
          },
          {
            "date": "2021-09-20",
            "count": 1
          },
          {
            "date": "2021-09-25",
            "count": 1
          },
          {
            "date": "2021-10-02",
            "count": 1
          },
          {
            "date": "2021-10-03",
            "count": 1
          },
          {
            "date": "2021-10-10",
            "count": 1
          },
          {
            "date": "2021-10-18",
            "count": 1
          },
          {
            "date": "2021-10-25",
            "count": 1
          },
          {
            "date": "2021-10-27",
            "count": 1
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2021-11-08",
            "count": 2
          },
          {
            "date": "2021-11-11",
            "count": 1
          },
          {
            "date": "2021-11-14",
            "count": 1
          },
          {
            "date": "2021-11-16",
            "count": 1
          },
          {
            "date": "2021-11-17",
            "count": 1
          },
          {
            "date": "2021-11-22",
            "count": 1
          },
          {
            "date": "2021-11-24",
            "count": 2
          },
          {
            "date": "2021-12-10",
            "count": 1
          },
          {
            "date": "2021-12-12",
            "count": 1
          },
          {
            "date": "2021-12-18",
            "count": 1
          },
          {
            "date": "2021-12-21",
            "count": 1
          },
          {
            "date": "2021-12-22",
            "count": 1
          },
          {
            "date": "2021-12-31",
            "count": 1
          },
          {
            "date": "2022-01-08",
            "count": 1
          },
          {
            "date": "2022-01-10",
            "count": 4
          },
          {
            "date": "2022-01-18",
            "count": 1
          },
          {
            "date": "2022-01-20",
            "count": 1
          },
          {
            "date": "2022-02-02",
            "count": 1
          },
          {
            "date": "2022-02-07",
            "count": 1
          },
          {
            "date": "2022-02-21",
            "count": 1
          },
          {
            "date": "2022-02-24",
            "count": 2
          },
          {
            "date": "2022-03-01",
            "count": 1
          },
          {
            "date": "2022-03-02",
            "count": 2
          },
          {
            "date": "2022-03-05",
            "count": 1
          },
          {
            "date": "2022-03-13",
            "count": 2
          },
          {
            "date": "2022-03-15",
            "count": 1
          },
          {
            "date": "2022-03-16",
            "count": 1
          },
          {
            "date": "2022-03-21",
            "count": 1
          },
          {
            "date": "2022-03-22",
            "count": 1
          },
          {
            "date": "2022-03-24",
            "count": 1
          },
          {
            "date": "2022-04-03",
            "count": 1
          },
          {
            "date": "2022-04-04",
            "count": 1
          },
          {
            "date": "2022-04-07",
            "count": 1
          },
          {
            "date": "2022-04-10",
            "count": 1
          },
          {
            "date": "2022-04-11",
            "count": 2
          },
          {
            "date": "2022-04-12",
            "count": 1
          },
          {
            "date": "2022-04-14",
            "count": 1
          },
          {
            "date": "2022-04-18",
            "count": 1
          },
          {
            "date": "2022-04-20",
            "count": 2
          },
          {
            "date": "2022-04-21",
            "count": 1
          },
          {
            "date": "2022-04-26",
            "count": 1
          },
          {
            "date": "2022-04-30",
            "count": 1
          },
          {
            "date": "2022-05-02",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 1
          },
          {
            "date": "2022-05-07",
            "count": 1
          },
          {
            "date": "2022-05-10",
            "count": 1
          },
          {
            "date": "2022-05-13",
            "count": 1
          },
          {
            "date": "2022-05-14",
            "count": 1
          },
          {
            "date": "2022-05-16",
            "count": 1
          },
          {
            "date": "2022-05-20",
            "count": 1
          },
          {
            "date": "2022-05-21",
            "count": 1
          },
          {
            "date": "2022-06-08",
            "count": 1
          },
          {
            "date": "2022-06-28",
            "count": 1
          },
          {
            "date": "2022-07-20",
            "count": 1
          },
          {
            "date": "2022-07-21",
            "count": 1
          },
          {
            "date": "2022-07-25",
            "count": 1
          },
          {
            "date": "2022-08-04",
            "count": 1
          },
          {
            "date": "2022-08-06",
            "count": 1
          },
          {
            "date": "2022-08-07",
            "count": 1
          },
          {
            "date": "2022-08-10",
            "count": 1
          },
          {
            "date": "2022-08-11",
            "count": 1
          },
          {
            "date": "2022-08-12",
            "count": 1
          },
          {
            "date": "2022-08-13",
            "count": 1
          },
          {
            "date": "2022-08-15",
            "count": 1
          },
          {
            "date": "2022-08-28",
            "count": 1
          },
          {
            "date": "2022-08-30",
            "count": 1
          },
          {
            "date": "2022-08-31",
            "count": 1
          },
          {
            "date": "2022-09-01",
            "count": 1
          },
          {
            "date": "2022-09-06",
            "count": 1
          },
          {
            "date": "2022-09-13",
            "count": 1
          },
          {
            "date": "2022-09-16",
            "count": 1
          },
          {
            "date": "2022-09-17",
            "count": 1
          },
          {
            "date": "2022-10-07",
            "count": 1
          },
          {
            "date": "2022-10-12",
            "count": 1
          },
          {
            "date": "2022-10-17",
            "count": 1
          },
          {
            "date": "2022-10-21",
            "count": 1
          },
          {
            "date": "2022-10-26",
            "count": 1
          },
          {
            "date": "2022-11-05",
            "count": 1
          },
          {
            "date": "2022-11-11",
            "count": 2
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2022-12-03",
            "count": 1
          },
          {
            "date": "2022-12-05",
            "count": 1
          },
          {
            "date": "2022-12-07",
            "count": 1
          },
          {
            "date": "2022-12-27",
            "count": 1
          },
          {
            "date": "2023-01-05",
            "count": 1
          },
          {
            "date": "2023-01-14",
            "count": 1
          },
          {
            "date": "2023-01-19",
            "count": 1
          },
          {
            "date": "2023-01-27",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 1
          },
          {
            "date": "2023-02-02",
            "count": 1
          },
          {
            "date": "2023-02-06",
            "count": 1
          },
          {
            "date": "2023-02-11",
            "count": 1
          },
          {
            "date": "2023-02-21",
            "count": 1
          },
          {
            "date": "2023-02-27",
            "count": 1
          },
          {
            "date": "2023-03-09",
            "count": 1
          },
          {
            "date": "2023-03-11",
            "count": 1
          },
          {
            "date": "2023-03-20",
            "count": 2
          },
          {
            "date": "2023-03-22",
            "count": 1
          },
          {
            "date": "2023-04-01",
            "count": 1
          },
          {
            "date": "2023-04-03",
            "count": 2
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-06",
            "count": 1
          },
          {
            "date": "2023-04-11",
            "count": 1
          },
          {
            "date": "2023-04-16",
            "count": 1
          },
          {
            "date": "2023-04-26",
            "count": 1
          },
          {
            "date": "2023-05-01",
            "count": 1
          },
          {
            "date": "2023-05-02",
            "count": 1
          },
          {
            "date": "2023-05-09",
            "count": 1
          },
          {
            "date": "2023-05-11",
            "count": 1
          },
          {
            "date": "2023-06-01",
            "count": 1
          },
          {
            "date": "2023-06-04",
            "count": 1
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-06-07",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 1
          },
          {
            "date": "2023-07-05",
            "count": 1
          },
          {
            "date": "2023-07-11",
            "count": 1
          },
          {
            "date": "2023-07-18",
            "count": 1
          },
          {
            "date": "2023-07-23",
            "count": 1
          },
          {
            "date": "2023-07-26",
            "count": 1
          },
          {
            "date": "2023-08-19",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-10-09",
            "count": 1
          },
          {
            "date": "2023-11-11",
            "count": 1
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-12-18",
            "count": 1
          },
          {
            "date": "2023-12-20",
            "count": 1
          },
          {
            "date": "2023-12-21",
            "count": 1
          },
          {
            "date": "2023-12-26",
            "count": 1
          },
          {
            "date": "2023-12-31",
            "count": 1
          },
          {
            "date": "2024-01-04",
            "count": 1
          },
          {
            "date": "2024-02-04",
            "count": 1
          },
          {
            "date": "2024-02-22",
            "count": 1
          },
          {
            "date": "2024-03-08",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 2
          },
          {
            "date": "2024-03-27",
            "count": 1
          },
          {
            "date": "2024-04-02",
            "count": 1
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-05-01",
            "count": 1
          },
          {
            "date": "2024-05-09",
            "count": 1
          },
          {
            "date": "2024-05-10",
            "count": 1
          },
          {
            "date": "2024-05-12",
            "count": 1
          },
          {
            "date": "2024-05-16",
            "count": 1
          },
          {
            "date": "2024-05-25",
            "count": 1
          },
          {
            "date": "2024-05-29",
            "count": 1
          },
          {
            "date": "2024-06-05",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-06-17",
            "count": 2
          },
          {
            "date": "2024-06-22",
            "count": 1
          },
          {
            "date": "2024-06-28",
            "count": 1
          },
          {
            "date": "2024-07-02",
            "count": 2
          },
          {
            "date": "2024-08-09",
            "count": 1
          },
          {
            "date": "2024-08-20",
            "count": 1
          },
          {
            "date": "2024-08-24",
            "count": 1
          },
          {
            "date": "2024-09-03",
            "count": 1
          },
          {
            "date": "2024-09-14",
            "count": 1
          },
          {
            "date": "2024-10-04",
            "count": 1
          },
          {
            "date": "2024-10-19",
            "count": 1
          },
          {
            "date": "2024-10-31",
            "count": 1
          },
          {
            "date": "2024-11-01",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2024-12-18",
            "count": 1
          },
          {
            "date": "2024-12-31",
            "count": 1
          },
          {
            "date": "2025-01-01",
            "count": 1
          },
          {
            "date": "2025-01-15",
            "count": 1
          },
          {
            "date": "2025-01-17",
            "count": 1
          },
          {
            "date": "2025-01-20",
            "count": 1
          },
          {
            "date": "2025-02-13",
            "count": 1
          },
          {
            "date": "2025-02-25",
            "count": 1
          },
          {
            "date": "2025-03-04",
            "count": 1
          },
          {
            "date": "2025-04-05",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-17",
            "count": 1
          },
          {
            "date": "2025-04-22",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-05-16",
            "count": 1
          },
          {
            "date": "2025-05-18",
            "count": 1
          },
          {
            "date": "2025-05-21",
            "count": 1
          },
          {
            "date": "2025-05-28",
            "count": 1
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-07-08",
            "count": 1
          },
          {
            "date": "2025-07-10",
            "count": 1
          },
          {
            "date": "2025-07-31",
            "count": 1
          },
          {
            "date": "2025-08-14",
            "count": 1
          },
          {
            "date": "2025-09-01",
            "count": 1
          },
          {
            "date": "2025-09-30",
            "count": 1
          },
          {
            "date": "2025-10-18",
            "count": 1
          },
          {
            "date": "2025-10-25",
            "count": 1
          },
          {
            "date": "2025-11-14",
            "count": 1
          },
          {
            "date": "2025-12-01",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-05",
            "count": 1
          },
          {
            "date": "2025-12-08",
            "count": 1
          },
          {
            "date": "2025-12-17",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 1
          },
          {
            "date": "2026-01-08",
            "count": 1
          },
          {
            "date": "2026-01-12",
            "count": 1
          },
          {
            "date": "2026-01-16",
            "count": 1
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-02-01",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 2
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 1
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 1568
      },
      "star_history": null,
      "open_issues_and_prs": 229
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 111256,
      "source_files_sampled": 122,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "docs/requirements.txt",
        "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": 1,
        "malicious_count": 0,
        "assessed_package": "npm:showdown@2.1.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "commander",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.0"
        },
        {
          "name": "happy-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^20.10.6"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "commander",
            "direct": true,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "happy-dom",
            "direct": true,
            "version": "20.10.6",
            "ecosystem": "npm"
          },
          {
            "name": "@acemir/cssom",
            "direct": false,
            "version": "0.9.31",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "6.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/checksums",
            "direct": false,
            "version": "3.1000.11",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/client-s3",
            "direct": false,
            "version": "3.1078.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.974.26",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.52",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.54",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.972.59",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.58",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.61",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.52",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.972.58",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.58",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/middleware-sdk-s3",
            "direct": false,
            "version": "3.972.57",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.26",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.38",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1078.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.973.15",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.33",
            "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/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@blazediff/core",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@conventional-changelog/git-client",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.1.9",
            "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.6",
            "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.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@exodus/bytes",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "@google-cloud/compute",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@google-cloud/container",
            "direct": false,
            "version": "6.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@google-cloud/resource-manager",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@grpc/grpc-js",
            "direct": false,
            "version": "1.14.4",
            "ecosystem": "npm"
          },
          {
            "name": "@grpc/proto-loader",
            "direct": false,
            "version": "0.7.15",
            "ecosystem": "npm"
          },
          {
            "name": "@grpc/proto-loader",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@grpc/reflection",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/types",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@hutson/parse-repository-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/cliui",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@js-sdsl/ordered-map",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jsep-plugin/assignment",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jsep-plugin/regex",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@kubernetes/client-node",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@kwsites/file-exists",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@kwsites/promise-deferred",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@open-draft/until",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.138.0",
            "ecosystem": "npm"
          },
          {
            "name": "@percy/appium-app",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@percy/sdk-utils",
            "direct": false,
            "version": "1.32.2",
            "ecosystem": "npm"
          },
          {
            "name": "@percy/selenium-webdriver",
            "direct": false,
            "version": "2.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgjs/parseargs",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/config.env-replace",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/network.ca-file",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pnpm/npm-conf",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@polka/url",
            "direct": false,
            "version": "1.0.0-next.29",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/aspromise",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/base64",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/codegen",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/eventemitter",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/fetch",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/float",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/path",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/pool",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/utf8",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@simple-git/args-pathspec",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@simple-git/argv-parser",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@simple-libs/child-process-utils",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@simple-libs/stream-utils",
            "direct": false,
            "version": "1.2.0",
            "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": "@smithy/core",
            "direct": false,
            "version": "3.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "@so-ric/colorspace",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@stylistic/eslint-plugin",
            "direct": false,
            "version": "5.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@szmarczak/http-timer",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@szmarczak/http-timer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tootallnate/quickjs-emscripten",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/cacheable-request",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/esrecurse",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/js-yaml",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/keyv",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node-fetch",
            "direct": false,
            "version": "2.6.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/responselike",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stream-buffers",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/triple-beam",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/whatwg-mimetype",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.62.1",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/browser",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/browser-playwright",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "abort-controller",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "add-stream",
            "direct": false,
            "version": "1.0.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.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-align",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "archiver",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "archiver-utils",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-ify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-types",
            "direct": false,
            "version": "0.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "astral-regex",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "b4a",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "bare-events",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "bare-fs",
            "direct": false,
            "version": "4.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-os",
            "direct": false,
            "version": "3.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "bare-path",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "bare-stream",
            "direct": false,
            "version": "2.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "bare-url",
            "direct": false,
            "version": "2.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "basic-ftp",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bignumber.js",
            "direct": false,
            "version": "9.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolean",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "browserstack-local",
            "direct": false,
            "version": "1.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "browserstack-node-sdk",
            "direct": false,
            "version": "1.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-equal-constant-time",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-image-size",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-lookup",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-lookup",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "10.2.14",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "7.0.4",
            "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": "camelcase",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.0.0-rc.11",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-boxes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone-response",
            "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": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commonmark-spec",
            "direct": false,
            "version": "0.31.2",
            "ecosystem": "npm"
          },
          {
            "name": "compare-func",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "compress-commons",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "config-chain",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "configstore",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-angular",
            "direct": false,
            "version": "8.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-atom",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-cli",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-codemirror",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-conventionalcommits",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-core",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-ember",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-eslint",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-express",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-jquery",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-jshint",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-preset-loader",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-writer",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-filter",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-parser",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "crc-32",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "crc32-stream",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-random-string",
            "direct": false,
            "version": "4.0.0",
            "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": "cssstyle",
            "direct": false,
            "version": "5.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "6.0.1",
            "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": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "defer-to-connect",
            "direct": false,
            "version": "2.0.1",
            "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": "degenerator",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diffable-html",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dotenv",
            "direct": false,
            "version": "16.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexify",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ecdsa-sig-formatter",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "enabled",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es6-error",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-goat",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "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": "events-universal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-fifo",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fecha",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "fetch-blob",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up-simple",
            "direct": false,
            "version": "1.0.1",
            "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": "foreground-child",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "form-data-encoder",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "formdata-polyfill",
            "direct": false,
            "version": "4.0.10",
            "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": "gaxios",
            "direct": false,
            "version": "6.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "gaxios",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "gaxios",
            "direct": false,
            "version": "7.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "gcp-metadata",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "gcp-metadata",
            "direct": false,
            "version": "8.1.3",
            "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-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-uri",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "getos",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-last-commit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-raw-commits",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-repo-info",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-semver-tags",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gitconfiglocal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "10.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-agent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-dirs",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "17.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "globalthis",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "google-auth-library",
            "direct": false,
            "version": "10.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "google-auth-library",
            "direct": false,
            "version": "9.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "google-gax",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "google-logging-utils",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "google-logging-utils",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "google-protobuf",
            "direct": false,
            "version": "3.21.4",
            "ecosystem": "npm"
          },
          {
            "name": "googleapis",
            "direct": false,
            "version": "126.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "googleapis-common",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "11.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "12.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gtoken",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gtoken",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "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-yarn",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "headers-utils",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hpagent",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "8.0.2",
            "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": "1.0.3",
            "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": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "index-to-position",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-ci",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-installed-globally",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-npm",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-running",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-yarn-global",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isomorphic-ws",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jackspeak",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "28.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml-cloudformation-schema",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml-js-types",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "27.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsep",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-bigint",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonpath-plus",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jwa",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jws",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kuler",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "latest-version",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lazystream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.truncate",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "logform",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "long",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "2.0.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.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "matcher",
            "direct": false,
            "version": "3.0.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": "meow",
            "direct": false,
            "version": "13.2.0",
            "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": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "monkeypatch",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "netmask",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-domexception",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-request-interceptor",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "6.1.0",
            "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": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "oauth4webapi",
            "direct": false,
            "version": "3.8.6",
            "ecosystem": "npm"
          },
          {
            "name": "object-hash",
            "direct": false,
            "version": "3.0.0",
            "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": "obug",
            "direct": false,
            "version": "2.1.3",
            "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": "openid-client",
            "direct": false,
            "version": "6.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-proxy-agent",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-resolver",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-json",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-json-from-dist",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pend",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "performance-now",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "pngjs",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.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": "proto-list",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "proto3-json-serializer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "protobufjs",
            "direct": false,
            "version": "7.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "protoc-gen-ts",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pupa",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-up",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "9.0.1",
            "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": "readdir-glob",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "reconnecting-websocket",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-url",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-alpn",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry-request",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rfc4648",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "5.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "roarr",
            "direct": false,
            "version": "2.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-stable-stringify",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "semver-compare",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver-regex",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "semver-sort",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-error",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-git",
            "direct": false,
            "version": "3.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "sirv",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "4.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": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.23",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-trace",
            "direct": false,
            "version": "0.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stream-buffers",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stream-events",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "stream-shift",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "streamx",
            "direct": false,
            "version": "2.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "strict-event-emitter",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "string_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": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stubs",
            "direct": false,
            "version": "3.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": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "table",
            "direct": false,
            "version": "6.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tar-fs",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "teeny-request",
            "direct": false,
            "version": "10.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "teex",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "temp-dir",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempfile",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-decoder",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "text-hex",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "7.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "totalist",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-kill",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "triple-beam",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "1.4.0",
            "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": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "unicorn-magic",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unique-string",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-notifier",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "url-template",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "11.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "web-streams-polyfill",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "3.0.0",
            "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": "15.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "widest-line",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "windows-release",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "winston",
            "direct": false,
            "version": "3.19.0",
            "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": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xdg-basedir",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zip-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mkdocs-material",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 733,
        "direct_count": 2,
        "indirect_count": 731
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 11,
        "merged_prs": 143,
        "open_issues": 218,
        "closed_ratio": 0.708,
        "closed_issues": 528,
        "closed_unmerged_prs": 155
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "tivie",
          "commits": 826,
          "avatar_url": "https://avatars.githubusercontent.com/u/1608730?v=4"
        },
        {
          "type": "User",
          "login": "tstone",
          "commits": 45,
          "avatar_url": "https://avatars.githubusercontent.com/u/90279?v=4"
        },
        {
          "type": "User",
          "login": "SyntaxRules",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/4117657?v=4"
        },
        {
          "type": "User",
          "login": "pdeschen",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/153048?v=4"
        },
        {
          "type": "User",
          "login": "VladimirV99",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/6758619?v=4"
        },
        {
          "type": "User",
          "login": "dchester",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/199934?v=4"
        },
        {
          "type": "User",
          "login": "langpavel",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/142462?v=4"
        },
        {
          "type": "User",
          "login": "bandantonio",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/16765690?v=4"
        },
        {
          "type": "User",
          "login": "DanielRuf",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/827205?v=4"
        },
        {
          "type": "User",
          "login": "ErisDS",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/101513?v=4"
        }
      ],
      "contributors_sampled": 74,
      "top_contributor_share": 0.813
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "browser.yml",
        "browserstack.yml",
        "codeql-analysis.yml",
        "docs.yml",
        "node.linux.yml",
        "node.win.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": true,
      "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": null,
            "reason": "no pull request found",
            "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/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 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 8 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 10,
            "reason": "all dependencies are pinned",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool detected: CodeQL",
            "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": 9,
            "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": 6,
            "reason": "4 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e5cab1e9a5dcea2bb3cbf888863fa7e65ab37edf",
        "ran_at": "2026-07-23T12:24:35Z",
        "aggregate_score": 7.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": true,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T04:30:43Z",
      "oldest_open_prs": [
        {
          "number": 618,
          "created_at": "2018-11-13T06:32:22Z",
          "last_comment_at": "2022-08-27T08:36:30Z",
          "last_comment_author": "MarketingPip"
        },
        {
          "number": 985,
          "created_at": "2023-07-11T14:49:02Z",
          "last_comment_at": "2023-07-18T16:22:11Z",
          "last_comment_author": "paviad"
        },
        {
          "number": 994,
          "created_at": "2024-01-18T15:01:58Z",
          "last_comment_at": "2024-01-18T15:02:23Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 1054,
          "created_at": "2026-07-04T18:06:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1055,
          "created_at": "2026-07-04T18:06:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1056,
          "created_at": "2026-07-04T18:06:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1057,
          "created_at": "2026-07-04T18:06:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1058,
          "created_at": "2026-07-04T18:06:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1063,
          "created_at": "2026-07-13T04:30:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1065,
          "created_at": "2026-07-20T04:30:41Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1066,
          "created_at": "2026-07-22T17:43:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-01T01:32:32Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 233,
          "created_at": "2016-01-25T06:17:45Z",
          "last_comment_at": "2024-01-24T19:00:27Z",
          "last_comment_author": "andrewlu0"
        },
        {
          "number": 322,
          "created_at": "2017-01-03T17:08:19Z",
          "last_comment_at": "2017-01-20T15:51:56Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 367,
          "created_at": "2017-03-30T11:49:31Z",
          "last_comment_at": "2019-01-30T01:36:03Z",
          "last_comment_author": "fabiospampinato"
        },
        {
          "number": 375,
          "created_at": "2017-04-11T12:33:58Z",
          "last_comment_at": "2017-06-02T02:50:24Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 381,
          "created_at": "2017-04-26T14:49:42Z",
          "last_comment_at": "2019-08-24T12:53:55Z",
          "last_comment_author": "hamed-farag"
        },
        {
          "number": 388,
          "created_at": "2017-05-07T19:12:01Z",
          "last_comment_at": "2018-09-14T20:40:34Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 394,
          "created_at": "2017-06-02T02:49:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 459,
          "created_at": "2017-11-09T04:22:31Z",
          "last_comment_at": "2017-12-25T23:44:10Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 486,
          "created_at": "2018-01-13T23:49:06Z",
          "last_comment_at": "2018-01-15T07:36:41Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 505,
          "created_at": "2018-03-10T01:52:55Z",
          "last_comment_at": "2020-09-14T20:34:11Z",
          "last_comment_author": "Schachte"
        },
        {
          "number": 511,
          "created_at": "2018-03-30T10:56:18Z",
          "last_comment_at": "2024-04-01T03:46:34Z",
          "last_comment_author": "zzzzBov"
        },
        {
          "number": 518,
          "created_at": "2018-04-19T12:33:21Z",
          "last_comment_at": "2018-05-07T18:10:52Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 537,
          "created_at": "2018-05-20T13:25:54Z",
          "last_comment_at": "2018-09-23T18:01:47Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 549,
          "created_at": "2018-06-06T00:20:00Z",
          "last_comment_at": "2018-06-27T20:19:48Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 554,
          "created_at": "2018-06-13T04:06:29Z",
          "last_comment_at": "2018-06-14T14:42:15Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 558,
          "created_at": "2018-07-01T18:00:43Z",
          "last_comment_at": "2018-07-05T16:19:43Z",
          "last_comment_author": "rugk"
        },
        {
          "number": 567,
          "created_at": "2018-07-31T13:30:55Z",
          "last_comment_at": "2018-08-08T13:31:03Z",
          "last_comment_author": "peci1"
        },
        {
          "number": 576,
          "created_at": "2018-08-29T02:54:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 584,
          "created_at": "2018-09-11T23:07:57Z",
          "last_comment_at": "2018-09-14T18:23:42Z",
          "last_comment_author": "tivie"
        },
        {
          "number": 586,
          "created_at": "2018-09-17T08:15:12Z",
          "last_comment_at": "2018-09-17T17:20:16Z",
          "last_comment_author": "tivie"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/showdownjs/showdown",
    "host": "github.com",
    "name": "showdown",
    "owner": "showdownjs"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 71,
      "inputs": {
        "security": 77,
        "vitality": 57,
        "community": 89,
        "governance": 53,
        "engineering": 87
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 57,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "commits_last_year": 188,
              "human_commit_share": 1,
              "days_since_last_push": 3,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "188 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 188
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "at_risk",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "releases_count": 54,
              "latest_release_tag": "2.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 1554,
              "mean_days_between_releases": 176.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "54 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 54
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1554 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1554
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~176.8 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 176.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 18,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 18 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 18
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 89,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "forks": 1568,
              "stars": 14873,
              "watchers": 184,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "14,873 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 14873
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1,568 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1568
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "184 watchers",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 184
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "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": 100,
            "inputs": {
              "packages": [
                "showdown"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 5622437
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,622,437 downloads/month across npm",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5622437,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 53,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 74,
              "top_contributor_share": 0.813
            },
            "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 81% of commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 81
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "74 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "merged_prs": 143,
              "open_issues": 218,
              "closed_issues": 528,
              "issue_closed_ratio": 0.708,
              "closed_unmerged_prs": 155
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "71% of issues closed",
                "points": 33.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 71
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "143/298 decided PRs merged",
                "points": 18.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 143,
                      "decided": 298
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "followers": 34,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "showdownjs",
              "public_repos": 14,
              "account_age_days": 5004
            },
            "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": "34 followers of showdownjs",
                "points": 11.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 34,
                      "login": "showdownjs"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "14 public repos, account ~13 yr old",
                "points": 20.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 14
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "moderate",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "packages": [
                "showdown"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 1554
            },
            "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 1554 days ago",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1554
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "62 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 62
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 87,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "showdown",
                "javascript",
                "markdown",
                "markdown-parser",
                "markdown-flavors",
                "gfm",
                "html",
                "converter",
                "html-converter"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": 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": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "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": "good",
        "name": "Security",
        "value": 77,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "good",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, CI-Tests, Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "ci_tests",
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 71,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 7.1
            },
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "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 8 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "all dependencies are pinned",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected: CodeQL",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "4 existing vulnerabilities detected",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:showdown@2.1.0 runtime dependency closure — what installing the published package pulls in — 1 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:showdown@2.1.0",
                  "assessed": 1
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 1,
              "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": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 1,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 53,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.87,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "87 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.02,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "2 of the last 100 commits agent-authored or agent-credited",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 2,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "dependency automation configured, none observed in the sampled commits",
                "points": 5,
                "status": "partial",
                "details": [
                  {
                    "code": "dependency_bot_config_only",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "all dependencies are pinned",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 111256,
              "source_files_sampled": 122,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/122 source files over 60KB",
                "points": 54.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 122,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T12:24:52.405298Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/showdownjs/showdown.svg",
  "full_name": "showdownjs/showdown",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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