公开记录
软件健康报告模式 0.31.0 · 指标 2.5.0 · 2026-08-05 09:25 UTC

flipbook-labs / flipbook

Storybook plugin for Roblox UI

LuauMIT★ 123 星标⑂ 10 复刻始于 2021年12月在 GitHub 上查看 ↗
类型插件如何判定

flipbook-labs/flipbook 的健康指数为 100 分中的 69 分,处于「良好」区间。 其得分最高的类别是Vitality(80/100),最低的是Security(44/100)。 最近一次更新在 5 天前。 近期的大部分工作由 1 位贡献者完成。

69
总分 / 100
良好

软件健康指数

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

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

评分画像

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

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

所有权

14 关注者16 个公开仓库始于 2023年5月

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

按类别列示的指标

活力

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

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

发布纪律

67良好
评分方式
27/27有发布版本 — 已发布 13 个发布版本
27/36发布时效 — 最近一次发布版本于 116 天前
12.6/27发布节奏 — 约每 127.4 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count13
latest_release_tagv2.5.0
releases_from_tags
days_since_latest_release116
mean_days_between_releases127.4

社区与采用

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

51中等 · 占总体的 17%
评分方式
33.8/60星标 — 123 个星标
8/25复刻 — 10 个复刻
3.3/15关注者 — 5 位关注者
所用输入
forks10
stars123
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

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

可持续性与治理

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

50中等 · 占总体的 23%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
1.6/22.5提交分布 — 头号贡献者编写了 93% 的提交
9.5/13.5贡献者广度 — 7 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled7
top_contributor_share0.931
评分方式
30.6/42议题解决 — 73% 的议题已关闭
25.7/30PR 接受 — 已裁定的 PR 中 303/354 已合并
0/13Newcomer PR acceptance — 30 天内没有首次贡献者的 PR 得到裁决
12/15OpenSSF Scorecard:Code-Review — Found 24/29 approved changesets -- score normalized to 8
所用输入
merged_prs303
open_issues64
closed_issues172
prs_merged_7d0
prs_decided_7d2
prs_merged_30d0
prs_decided_30d3
issue_closed_ratio0.729
closed_unmerged_prs51
first_time_authors_30d0
first_time_prs_merged_30d0
first_time_prs_decided_30d0
已排除计分(无数据或不适用):newcomer_pr_acceptance。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
8.5/25所有者影响力 — flipbook-labs 有 14 位关注者
15.5/25既往记录 — 16 个公开仓库,账户约 3 年
所用输入
followers14
owner_typeOrganization
is_verified
owner_loginflipbook-labs
public_repos16
account_age_days1,187

工程质量

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

80优秀 · 占总体的 19%

工程实践

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

文档

90优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://flipbook-labs.github.io/flipbook/
10/10仓库描述
10/10主题标签 — 4 个主题标签
0/10Wiki
所用输入
topicsroblox, plugin, storybook, roact
has_wiki
homepagehttps://flipbook-labs.github.io/flipbook/
has_readme
has_docs_dir
has_description

安全

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

44薄弱 · 占总体的 16%

安全态势

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

AI 就绪度

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

65良好 · 占总体的 4%
评分方式
45/45代理指令 — AGENTS.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 98 次人类提交中有 98 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12,585
评分方式
0/18一条命令的引导启动
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — docs/tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 11 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilespackage-lock.json
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsdocs/tsconfig.json
agent_commit_share0.11
toolchain_manifests
dependency_bot_commit_share0
评分方式
27/45可类型检查的代码 — Luau,已配置类型检查(docs/tsconfig.json)
55/55可控的文件大小 — 采样的 5 个源文件中有 0 个超过 60KB
所用输入
primary_languageLuau
largest_source_bytes1,686
source_files_sampled5
oversized_source_files0
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
0/20MCP 服务器
40/40可运行示例 — example, examples
所用输入
example_dirsexample, examples
has_mcp_signal
api_schema_files

关键数据

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

数据采集警告

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

更多细节

Star 与 Fork 历史 0 ★ / 10 ⇿
0Star
10Fork
13发布

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

02468101022022-062024-052026-04
主版本 2次版本 10修订 1

每个点涵盖 4 天。

OpenSSF Scorecard 3.0 / 10
3.0综合

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

10Binary-Artifactsno binaries found in the repo
4Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
8Code-ReviewFound 24/29 approved changesets -- score normalized to 8
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
0Dangerous-Workflowdangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities73 existing vulnerabilities detected
全部依赖 1,094

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

注册表软件包版本关系
npm@algolia/autocomplete-core1.17.7间接
npm@algolia/autocomplete-plugin-algolia-insights1.17.7间接
npm@algolia/autocomplete-preset-algolia1.17.7间接
npm@algolia/autocomplete-shared1.17.7间接
npm@algolia/cache-browser-local-storage4.24.0间接
npm@algolia/cache-common4.24.0间接
npm@algolia/cache-in-memory4.24.0间接
npm@algolia/client-abtesting5.14.2间接
npm@algolia/client-account4.24.0间接
npm@algolia/client-analytics4.24.0间接
npm@algolia/client-analytics5.14.2间接
npm@algolia/client-common4.24.0间接
npm@algolia/client-common5.14.2间接
npm@algolia/client-insights5.14.2间接
npm@algolia/client-personalization4.24.0间接
npm@algolia/client-personalization5.14.2间接
npm@algolia/client-query-suggestions5.14.2间接
npm@algolia/client-search4.24.0间接
npm@algolia/client-search5.14.2间接
npm@algolia/events4.0.1间接
npm@algolia/ingestion1.14.2间接
npm@algolia/logger-common4.24.0间接
npm@algolia/logger-console4.24.0间接
npm@algolia/monitoring1.14.2间接
npm@algolia/recommend4.24.0间接
npm@algolia/recommend5.14.2间接
npm@algolia/requester-browser-xhr4.24.0间接
npm@algolia/requester-browser-xhr5.14.2间接
npm@algolia/requester-common4.24.0间接
npm@algolia/requester-fetch5.14.2间接
npm@algolia/requester-node-http4.24.0间接
npm@algolia/requester-node-http5.14.2间接
npm@algolia/transporter4.24.0间接
npm@ampproject/remapping2.3.0间接
npm@babel/code-frame7.26.2间接
npm@babel/compat-data7.26.2间接
npm@babel/core7.26.0间接
npm@babel/generator7.26.2间接
npm@babel/helper-annotate-as-pure7.25.9间接
npm@babel/helper-builder-binary-assignment-operator-visitor7.25.9间接
npm@babel/helper-compilation-targets7.25.9间接
npm@babel/helper-create-class-features-plugin7.25.9间接
npm@babel/helper-create-regexp-features-plugin7.25.9间接
npm@babel/helper-define-polyfill-provider0.6.3间接
npm@babel/helper-member-expression-to-functions7.25.9间接
npm@babel/helper-module-imports7.25.9间接
npm@babel/helper-module-transforms7.26.0间接
npm@babel/helper-optimise-call-expression7.25.9间接
npm@babel/helper-plugin-utils7.25.9间接
npm@babel/helper-remap-async-to-generator7.25.9间接
npm@babel/helper-replace-supers7.25.9间接
npm@babel/helper-simple-access7.25.9间接
npm@babel/helper-skip-transparent-expression-wrappers7.25.9间接
npm@babel/helper-string-parser7.25.9间接
npm@babel/helper-validator-identifier7.25.9间接
npm@babel/helper-validator-option7.25.9间接
npm@babel/helper-wrap-function7.25.9间接
npm@babel/helpers7.26.0间接
npm@babel/parser7.26.2间接
npm@babel/plugin-bugfix-firefox-class-in-computed-class-key7.25.9间接
npm@babel/plugin-bugfix-safari-class-field-initializer-scope7.25.9间接
npm@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression7.25.9间接
npm@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining7.25.9间接
npm@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly7.25.9间接
npm@babel/plugin-proposal-private-property-in-object7.21.0-placeholder-for-preset-env.2间接
npm@babel/plugin-syntax-dynamic-import7.8.3间接
npm@babel/plugin-syntax-import-assertions7.26.0间接
npm@babel/plugin-syntax-import-attributes7.26.0间接
npm@babel/plugin-syntax-jsx7.25.9间接
npm@babel/plugin-syntax-typescript7.25.9间接
npm@babel/plugin-syntax-unicode-sets-regex7.18.6间接
npm@babel/plugin-transform-arrow-functions7.25.9间接
npm@babel/plugin-transform-async-generator-functions7.25.9间接
npm@babel/plugin-transform-async-to-generator7.25.9间接
npm@babel/plugin-transform-block-scoped-functions7.25.9间接
npm@babel/plugin-transform-block-scoping7.25.9间接
npm@babel/plugin-transform-class-properties7.25.9间接
npm@babel/plugin-transform-class-static-block7.26.0间接
npm@babel/plugin-transform-classes7.25.9间接
npm@babel/plugin-transform-computed-properties7.25.9间接
npm@babel/plugin-transform-destructuring7.25.9间接
npm@babel/plugin-transform-dotall-regex7.25.9间接
npm@babel/plugin-transform-duplicate-keys7.25.9间接
npm@babel/plugin-transform-duplicate-named-capturing-groups-regex7.25.9间接
npm@babel/plugin-transform-dynamic-import7.25.9间接
npm@babel/plugin-transform-exponentiation-operator7.25.9间接
npm@babel/plugin-transform-export-namespace-from7.25.9间接
npm@babel/plugin-transform-for-of7.25.9间接
npm@babel/plugin-transform-function-name7.25.9间接
npm@babel/plugin-transform-json-strings7.25.9间接
npm@babel/plugin-transform-literals7.25.9间接
npm@babel/plugin-transform-logical-assignment-operators7.25.9间接
npm@babel/plugin-transform-member-expression-literals7.25.9间接
npm@babel/plugin-transform-modules-amd7.25.9间接
npm@babel/plugin-transform-modules-commonjs7.25.9间接
npm@babel/plugin-transform-modules-systemjs7.25.9间接
npm@babel/plugin-transform-modules-umd7.25.9间接
npm@babel/plugin-transform-named-capturing-groups-regex7.25.9间接
npm@babel/plugin-transform-new-target7.25.9间接
npm@babel/plugin-transform-nullish-coalescing-operator7.25.9间接
npm@babel/plugin-transform-numeric-separator7.25.9间接
npm@babel/plugin-transform-object-rest-spread7.25.9间接
npm@babel/plugin-transform-object-super7.25.9间接
npm@babel/plugin-transform-optional-catch-binding7.25.9间接
npm@babel/plugin-transform-optional-chaining7.25.9间接
npm@babel/plugin-transform-parameters7.25.9间接
npm@babel/plugin-transform-private-methods7.25.9间接
npm@babel/plugin-transform-private-property-in-object7.25.9间接
npm@babel/plugin-transform-property-literals7.25.9间接
npm@babel/plugin-transform-react-constant-elements7.25.9间接
npm@babel/plugin-transform-react-display-name7.25.9间接
npm@babel/plugin-transform-react-jsx7.25.9间接
npm@babel/plugin-transform-react-jsx-development7.25.9间接
npm@babel/plugin-transform-react-pure-annotations7.25.9间接
npm@babel/plugin-transform-regenerator7.25.9间接
npm@babel/plugin-transform-regexp-modifiers7.26.0间接
npm@babel/plugin-transform-reserved-words7.25.9间接
npm@babel/plugin-transform-runtime7.25.9间接
npm@babel/plugin-transform-shorthand-properties7.25.9间接
npm@babel/plugin-transform-spread7.25.9间接
npm@babel/plugin-transform-sticky-regex7.25.9间接
npm@babel/plugin-transform-template-literals7.25.9间接
npm@babel/plugin-transform-typeof-symbol7.25.9间接
npm@babel/plugin-transform-typescript7.25.9间接
npm@babel/plugin-transform-unicode-escapes7.25.9间接
npm@babel/plugin-transform-unicode-property-regex7.25.9间接
npm@babel/plugin-transform-unicode-regex7.25.9间接
npm@babel/plugin-transform-unicode-sets-regex7.25.9间接
npm@babel/preset-env7.26.0间接
npm@babel/preset-modules0.1.6-no-external-plugins间接
npm@babel/preset-react7.25.9间接
npm@babel/preset-typescript7.26.0间接
npm@babel/runtime7.26.0间接
npm@babel/runtime-corejs37.26.0间接
npm@babel/template7.25.9间接
npm@babel/traverse7.25.9间接
npm@babel/types7.26.0间接
npm@colors/colors1.5.0间接
npm@discoveryjs/json-ext0.5.7间接
npm@docsearch/css3.8.0间接
npm@docsearch/react3.8.0间接
npm@docusaurus/babel3.6.1间接
npm@docusaurus/bundler3.6.1间接
npm@docusaurus/core3.6.1间接
npm@docusaurus/cssnano-preset3.6.1间接
npm@docusaurus/logger3.6.1间接
npm@docusaurus/mdx-loader3.6.1间接
npm@docusaurus/module-type-aliases3.6.1间接
npm@docusaurus/plugin-content-blog3.6.1间接
npm@docusaurus/plugin-content-docs3.6.1间接
npm@docusaurus/plugin-content-pages3.6.1间接
npm@docusaurus/plugin-debug3.6.1间接
npm@docusaurus/plugin-google-analytics3.6.1间接
npm@docusaurus/plugin-google-gtag3.6.1间接
npm@docusaurus/plugin-google-tag-manager3.6.1间接
npm@docusaurus/plugin-sitemap3.6.1间接
npm@docusaurus/preset-classic3.6.1间接
npm@docusaurus/react-loadable6.0.0间接
npm@docusaurus/theme-classic3.6.1间接
npm@docusaurus/theme-common3.6.1间接
npm@docusaurus/theme-search-algolia3.6.1间接
npm@docusaurus/theme-translations3.6.1间接
npm@docusaurus/tsconfig3.6.1间接
npm@docusaurus/types3.6.1间接
npm@docusaurus/utils3.6.1间接
npm@docusaurus/utils-common3.6.1间接
npm@docusaurus/utils-validation3.6.1间接
npm@hapi/hoek9.3.0间接
npm@hapi/topo5.1.0间接
npm@jest/schemas29.6.3间接
npm@jest/types29.6.3间接
npm@jridgewell/gen-mapping0.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/set-array1.2.1间接
npm@jridgewell/source-map0.3.6间接
npm@jridgewell/sourcemap-codec1.5.0间接
npm@jridgewell/trace-mapping0.3.25间接
npm@leichtgewicht/ip-codec2.0.5间接
npm@mdx-js/mdx3.1.0间接
npm@mdx-js/react3.1.0间接
npm@nodelib/fs.scandir2.1.5间接
npm@nodelib/fs.stat2.0.5间接
npm@nodelib/fs.walk1.2.8间接
npm@pnpm/config.env-replace1.1.0间接
npm@pnpm/network.ca-file1.0.2间接
npm@pnpm/npm-conf2.3.1间接
npm@polka/url1.0.0-next.28间接
npm@sideway/address4.1.5间接
npm@sideway/formula3.0.1间接
npm@sideway/pinpoint2.0.0间接
npm@sinclair/typebox0.27.8间接
npm@sindresorhus/is4.6.0间接
npm@sindresorhus/is5.6.0间接
npm@slorber/remark-comment1.0.0间接
npm@svgr/babel-plugin-add-jsx-attribute8.0.0间接
npm@svgr/babel-plugin-remove-jsx-attribute8.0.0间接
npm@svgr/babel-plugin-remove-jsx-empty-expression8.0.0间接
npm@svgr/babel-plugin-replace-jsx-attribute-value8.0.0间接
npm@svgr/babel-plugin-svg-dynamic-title8.0.0间接
npm@svgr/babel-plugin-svg-em-dimensions8.0.0间接
npm@svgr/babel-plugin-transform-react-native-svg8.1.0间接
npm@svgr/babel-plugin-transform-svg-component8.0.0间接
npm@svgr/babel-preset8.1.0间接
npm@svgr/core8.1.0间接
npm@svgr/hast-util-to-babel-ast8.0.0间接
npm@svgr/plugin-jsx8.1.0间接
npm@svgr/plugin-svgo8.1.0间接
npm@svgr/webpack8.1.0间接
npm@szmarczak/http-timer5.0.1间接
npm@trysound/sax0.2.0间接
npm@types/acorn4.0.6间接
npm@types/body-parser1.19.5间接
npm@types/bonjour3.5.13间接
npm@types/connect3.4.38间接
npm@types/connect-history-api-fallback1.5.4间接
npm@types/debug4.1.12间接
npm@types/eslint9.6.1间接
npm@types/eslint-scope3.7.7间接
npm@types/estree1.0.6间接
npm@types/estree-jsx1.0.5间接
npm@types/express4.17.21间接
npm@types/express-serve-static-core4.19.6间接
npm@types/express-serve-static-core5.0.1间接
npm@types/gtag.js0.0.12间接
npm@types/hast3.0.4间接
npm@types/history4.7.11间接
npm@types/html-minifier-terser6.1.0间接
npm@types/http-cache-semantics4.0.4间接
npm@types/http-errors2.0.4间接
npm@types/http-proxy1.17.15间接
npm@types/istanbul-lib-coverage2.0.6间接
npm@types/istanbul-lib-report3.0.3间接
npm@types/istanbul-reports3.0.4间接
npm@types/json-schema7.0.15间接
npm@types/mdast4.0.4间接
npm@types/mdx2.0.13间接
npm@types/mime1.3.5间接
npm@types/ms0.7.34间接
npm@types/node17.0.45间接
npm@types/node22.9.0间接
npm@types/node-forge1.3.11间接
npm@types/parse-json4.0.2间接
npm@types/prismjs1.26.5间接
npm@types/prop-types15.7.13间接
npm@types/qs6.9.17间接
npm@types/range-parser1.2.7间接
npm@types/react18.3.12间接
npm@types/react-router5.1.20间接
npm@types/react-router-config5.0.11间接
npm@types/react-router-dom5.3.3间接
npm@types/retry0.12.0间接
npm@types/sax1.2.7间接
npm@types/send0.17.4间接
npm@types/serve-index1.9.4间接
npm@types/serve-static1.15.7间接
npm@types/sockjs0.3.36间接
npm@types/unist2.0.11间接
npm@types/unist3.0.3间接
npm@types/ws8.5.13间接
npm@types/yargs17.0.33间接
npm@types/yargs-parser21.0.3间接
npm@ungap/structured-clone1.2.0间接
npm@webassemblyjs/ast1.14.1间接
npm@webassemblyjs/floating-point-hex-parser1.13.2间接
npm@webassemblyjs/helper-api-error1.13.2间接
npm@webassemblyjs/helper-buffer1.14.1间接
npm@webassemblyjs/helper-numbers1.13.2间接
npm@webassemblyjs/helper-wasm-bytecode1.13.2间接
npm@webassemblyjs/helper-wasm-section1.14.1间接
npm@webassemblyjs/ieee7541.13.2间接
npm@webassemblyjs/leb1281.13.2间接
npm@webassemblyjs/utf81.13.2间接
npm@webassemblyjs/wasm-edit1.14.1间接
npm@webassemblyjs/wasm-gen1.14.1间接
npm@webassemblyjs/wasm-opt1.14.1间接
npm@webassemblyjs/wasm-parser1.14.1间接
npm@webassemblyjs/wast-printer1.14.1间接
npm@xtuc/ieee7541.2.0间接
npm@xtuc/long4.2.2间接
npmaccepts1.3.8间接
npmacorn8.14.0间接
npmacorn-jsx5.3.2间接
npmacorn-walk8.3.4间接
npmaddress1.2.2间接
npmaggregate-error3.1.0间接
npmajv6.12.6间接
npmajv8.17.1间接
npmajv-formats2.1.1间接
npmajv-keywords3.5.2间接
npmajv-keywords5.1.0间接
npmalgoliasearch4.24.0间接
npmalgoliasearch5.14.2间接
npmalgoliasearch-helper3.22.5间接
npmansi-align3.0.1间接
npmansi-escapes4.3.2间接
npmansi-html-community0.0.8间接
npmansi-regex5.0.1间接
npmansi-regex6.1.0间接
npmansi-styles4.3.0间接
npmansi-styles6.2.1间接
npmanymatch3.1.3间接
npmarg5.0.2间接
npmargparse1.0.10间接
npmargparse2.0.1间接
npmarray-flatten1.1.1间接
npmarray-union2.1.0间接
npmastring1.9.0间接
npmat-least-node1.0.0间接
npmautoprefixer10.4.20间接
npmbabel-loader9.2.1间接
npmbabel-plugin-dynamic-import-node2.3.3间接
npmbabel-plugin-polyfill-corejs20.4.12间接
npmbabel-plugin-polyfill-corejs30.10.6间接
npmbabel-plugin-polyfill-regenerator0.6.3间接
npmbail2.0.2间接
npmbalanced-match1.0.2间接
npmbatch0.6.1间接
npmbig.js5.2.2间接
npmbinary-extensions2.3.0间接
npmbody-parser1.20.3间接
npmbonjour-service1.2.1间接
npmboolbase1.0.0间接
npmboxen6.2.1间接
npmboxen7.1.1间接
npmbrace-expansion1.1.11间接
npmbraces3.0.3间接
npmbrowserslist4.24.2间接
npmbuffer-from1.1.2间接
npmbytes3.0.0间接
npmbytes3.1.2间接
npmcacheable-lookup7.0.0间接
npmcacheable-request10.2.14间接
npmcall-bind1.0.7间接
npmcallsites3.1.0间接
npmcamel-case4.1.2间接
npmcamelcase6.3.0间接
npmcamelcase7.0.1间接
npmcaniuse-api3.0.0间接
npmcaniuse-lite1.0.30001680间接
npmccount2.0.1间接
npmchalk4.1.2间接
npmchalk5.3.0间接
npmchar-regex1.0.2间接
npmcharacter-entities2.0.2间接
npmcharacter-entities-html42.1.0间接
npmcharacter-entities-legacy3.0.0间接
npmcharacter-reference-invalid2.0.1间接
npmcheerio1.0.0-rc.12间接
npmcheerio-select2.1.0间接
npmchokidar3.6.0间接
npmchrome-trace-event1.0.4间接
npmci-info3.9.0间接
npmclean-css5.3.3间接
npmclean-stack2.2.0间接
npmcli-boxes3.0.0间接
npmcli-table30.6.5间接
npmclone-deep4.0.1间接
npmclsx2.1.1间接
npmcollapse-white-space2.1.0间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.4间接
npmcolord2.9.3间接
npmcolorette2.0.20间接
npmcombine-promises1.2.0间接
npmcomma-separated-tokens2.0.3间接
npmcommander10.0.1间接
npmcommander2.20.3间接
npmcommander5.1.0间接
npmcommander7.2.0间接
npmcommander8.3.0间接
npmcommon-path-prefix3.0.0间接
npmcompressible2.0.18间接
npmcompression1.7.5间接
npmconcat-map0.0.1间接
npmconfig-chain1.1.13间接
npmconfigstore6.0.0间接
npmconnect-history-api-fallback2.0.0间接
npmconsola3.2.3间接
npmcontent-disposition0.5.2间接
npmcontent-disposition0.5.4间接
npmcontent-type1.0.5间接
npmconvert-source-map2.0.0间接
npmcookie0.7.1间接
npmcookie-signature1.0.6间接
npmcopy-text-to-clipboard3.2.0间接
npmcopy-webpack-plugin11.0.0间接
npmcore-js3.39.0间接
npmcore-js-compat3.39.0间接
npmcore-js-pure3.39.0间接
npmcore-util-is1.0.3间接
npmcosmiconfig6.0.0间接
npmcosmiconfig8.3.6间接
npmcross-spawn7.0.5间接
npmcrypto-random-string4.0.0间接
npmcss-declaration-sorter7.2.0间接
npmcss-loader6.11.0间接
npmcss-minimizer-webpack-plugin5.0.1间接
npmcss-select4.3.0间接
npmcss-select5.1.0间接
npmcss-tree2.2.1间接
npmcss-tree2.3.1间接
npmcss-what6.1.0间接
npmcssesc3.0.0间接
npmcssnano6.1.2间接
npmcssnano-preset-advanced6.1.2间接
npmcssnano-preset-default6.1.2间接
npmcssnano-utils4.0.2间接
npmcsso5.0.5间接
npmcsstype3.1.3间接
npmdebounce1.2.1间接
npmdebug2.6.9间接
npmdebug4.3.7间接
npmdecode-named-character-reference1.0.2间接
npmdecompress-response6.0.0间接
npmdeep-extend0.6.0间接
npmdeepmerge4.3.1间接
npmdefault-gateway6.0.3间接
npmdefer-to-connect2.0.1间接
npmdefine-data-property1.1.4间接
npmdefine-lazy-prop2.0.0间接
npmdefine-properties1.2.1间接
npmdel6.1.1间接
npmdepd1.1.2间接
npmdepd2.0.0间接
npmdequal2.0.3间接
npmdestroy1.2.0间接
npmdetect-node2.1.0间接
npmdetect-port1.6.1间接
npmdetect-port-alt1.1.6间接
npmdevlop1.1.0间接
npmdir-glob3.0.1间接
npmdns-packet5.6.1间接
npmdom-converter0.2.0间接
npmdom-serializer1.4.1间接
npmdom-serializer2.0.0间接
npmdomelementtype2.3.0间接
npmdomhandler4.3.1间接
npmdomhandler5.0.3间接
npmdomutils2.8.0间接
npmdomutils3.1.0间接
npmdot-case3.0.4间接
npmdot-prop6.0.1间接
npmduplexer0.1.2间接
npmeastasianwidth0.2.0间接
npmee-first1.1.1间接
npmelectron-to-chromium1.5.62间接
npmemoji-regex8.0.0间接
npmemoji-regex9.2.2间接
npmemojilib2.4.0间接
npmemojis-list3.0.0间接
npmemoticon4.1.0间接
npmencodeurl1.0.2间接
npmencodeurl2.0.0间接
npmenhanced-resolve5.17.1间接
npmentities2.2.0间接
npmentities4.5.0间接
npmerror-ex1.3.2间接
npmes-define-property1.0.0间接
npmes-errors1.3.0间接
npmes-module-lexer1.5.4间接
npmesast-util-from-estree2.0.0间接
npmesast-util-from-js2.0.1间接
npmescalade3.2.0间接
npmescape-goat4.0.0间接
npmescape-html1.0.3间接
npmescape-string-regexp1.0.5间接
npmescape-string-regexp4.0.0间接
npmescape-string-regexp5.0.0间接
npmeslint-scope5.1.1间接
npmesprima4.0.1间接
npmesrecurse4.3.0间接
npmestraverse4.3.0间接
npmestraverse5.3.0间接
npmestree-util-attach-comments3.0.0间接
npmestree-util-build-jsx3.0.1间接
npmestree-util-is-identifier-name3.0.0间接
npmestree-util-scope1.0.0间接
npmestree-util-to-js2.0.0间接
npmestree-util-value-to-estree3.2.1间接
npmestree-util-visit2.0.0间接
npmestree-walker3.0.3间接
npmesutils2.0.3间接
npmeta2.2.0间接
npmetag1.8.1间接
npmeval0.1.8间接
npmeventemitter34.0.7间接
npmevents3.3.0间接
npmexeca5.1.1间接
npmexpress4.21.1间接
npmextend3.0.2间接
npmextend-shallow2.0.1间接
npmfast-deep-equal3.1.3间接
npmfast-glob3.3.2间接
npmfast-json-stable-stringify2.1.0间接
npmfast-uri3.0.3间接
npmfastq1.17.1间接
npmfault2.0.1间接
npmfaye-websocket0.11.4间接
npmfeed4.2.2间接
npmfigures3.2.0间接
npmfile-loader6.2.0间接
npmfilesize8.0.7间接
npmfill-range7.1.1间接
npmfinalhandler1.3.1间接
npmfind-cache-dir4.0.0间接
npmfind-up3.0.0间接
npmfind-up5.0.0间接
npmfind-up6.3.0间接
npmflat5.0.2间接
npmfollow-redirects1.15.9间接
npmfork-ts-checker-webpack-plugin6.5.3间接
npmform-data-encoder2.1.4间接
npmformat0.2.2间接
npmforwarded0.2.0间接
npmfraction.js4.3.7间接
npmfresh0.5.2间接
npmfs-extra11.2.0间接
npmfs-extra9.1.0间接
npmfs-monkey1.0.6间接
npmfs.realpath1.0.0间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmgensync1.0.0-beta.2间接
npmget-intrinsic1.2.4间接
npmget-own-enumerable-property-symbols3.0.2间接
npmget-stream6.0.1间接
npmgithub-slugger1.5.0间接
npmglob7.2.3间接
npmglob-parent5.1.2间接
npmglob-parent6.0.2间接
npmglob-to-regexp0.4.1间接
npmglobal-dirs3.0.1间接
npmglobal-modules2.0.0间接
npmglobal-prefix3.0.0间接
npmglobals11.12.0间接
npmglobby11.1.0间接
npmglobby13.2.2间接
npmgopd1.0.1间接
npmgot12.6.1间接
npmgraceful-fs4.2.10间接
npmgraceful-fs4.2.11间接
npmgray-matter4.0.3间接
npmgzip-size6.0.0间接
npmhandle-thing2.0.1间接
npmhas-flag4.0.0间接
npmhas-property-descriptors1.0.2间接
npmhas-proto1.0.3间接
npmhas-symbols1.0.3间接
npmhas-yarn3.0.0间接
npmhasown2.0.2间接
npmhast-util-from-parse58.0.1间接
npmhast-util-parse-selector4.0.0间接
npmhast-util-raw9.1.0间接
npmhast-util-to-estree3.1.0间接
npmhast-util-to-jsx-runtime2.3.2间接
npmhast-util-to-parse58.0.0间接
npmhast-util-whitespace3.0.0间接
npmhastscript8.0.0间接
npmhe1.2.0间接
npmhistory4.10.1间接
npmhoist-non-react-statics3.3.2间接
npmhpack.js2.1.6间接
npmhtml-entities2.5.2间接
npmhtml-escaper2.0.2间接
npmhtml-minifier-terser6.1.0间接
npmhtml-minifier-terser7.2.0间接
npmhtml-tags3.3.1间接
npmhtml-void-elements3.0.0间接
npmhtml-webpack-plugin5.6.3间接
npmhtmlparser26.1.0间接
npmhtmlparser28.0.2间接
npmhttp-cache-semantics4.1.1间接
npmhttp-deceiver1.2.7间接
npmhttp-errors1.6.3间接
npmhttp-errors2.0.0间接
npmhttp-parser-js0.5.8间接
npmhttp-proxy1.18.1间接
npmhttp-proxy-middleware2.0.7间接
npmhttp2-wrapper2.2.1间接
npmhuman-signals2.1.0间接
npmiconv-lite0.4.24间接
npmicss-utils5.1.0间接
npmignore5.3.2间接
npmimage-size1.1.1间接
npmimmer9.0.21间接
npmimport-fresh3.3.0间接
npmimport-lazy4.0.0间接
npmimurmurhash0.1.4间接
npmindent-string4.0.0间接
npminfima0.2.0-alpha.45间接
npminflight1.0.6间接
npminherits2.0.3间接
npminherits2.0.4间接
npmini1.3.8间接
npmini2.0.0间接
npminline-style-parser0.1.1间接
npminline-style-parser0.2.4间接
npminterpret1.4.0间接
npminvariant2.2.4间接
npmipaddr.js1.9.1间接
npmipaddr.js2.2.0间接
npmis-alphabetical2.0.1间接
npmis-alphanumerical2.0.1间接
npmis-arrayish0.2.1间接
npmis-binary-path2.1.0间接
npmis-ci3.0.1间接
npmis-core-module2.15.1间接
npmis-decimal2.0.1间接
npmis-docker2.2.1间接
npmis-extendable0.1.1间接
npmis-extglob2.1.1间接
npmis-fullwidth-code-point3.0.0间接
npmis-glob4.0.3间接
npmis-hexadecimal2.0.1间接
npmis-installed-globally0.4.0间接
npmis-npm6.0.0间接
npmis-number7.0.0间接
npmis-obj1.0.1间接
npmis-obj2.0.0间接
npmis-path-cwd2.2.0间接
npmis-path-inside3.0.3间接
npmis-plain-obj3.0.0间接
npmis-plain-obj4.1.0间接
npmis-plain-object2.0.4间接
npmis-regexp1.0.0间接
npmis-root2.1.0间接
npmis-stream2.0.1间接
npmis-typedarray1.0.0间接
npmis-wsl2.2.0间接
npmis-yarn-global0.4.1间接
npmisarray0.0.1间接
npmisarray1.0.0间接
npmisexe2.0.0间接
npmisobject3.0.1间接
npmjest-util29.7.0间接
npmjest-worker27.5.1间接
npmjest-worker29.7.0间接
npmjiti1.21.6间接
npmjoi17.13.3间接
npmjs-tokens4.0.0间接
npmjs-yaml3.14.1间接
npmjs-yaml4.1.0间接
npmjsesc3.0.2间接
npmjson-buffer3.0.1间接
npmjson-parse-even-better-errors2.3.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson52.2.3间接
npmjsonfile6.1.0间接
npmkeyv4.5.4间接
npmkind-of6.0.3间接
npmkleur3.0.3间接
npmlatest-version7.0.0间接
npmlaunch-editor2.9.1间接
npmleven3.1.0间接
npmlilconfig3.1.2间接
npmlines-and-columns1.2.4间接
npmloader-runner4.3.0间接
npmloader-utils2.0.4间接
npmloader-utils3.3.1间接
npmlocate-path3.0.0间接
npmlocate-path6.0.0间接
npmlocate-path7.2.0间接
npmlodash4.17.21间接
npmlodash.debounce4.0.8间接
npmlodash.memoize4.1.2间接
npmlodash.uniq4.5.0间接
npmlongest-streak3.1.0间接
npmloose-envify1.4.0间接
npmlower-case2.0.2间接
npmlowercase-keys3.0.0间接
npmlru-cache5.1.1间接
npmmarkdown-extensions2.0.0间接
npmmarkdown-table2.0.0间接
npmmarkdown-table3.0.4间接
npmmdast-util-directive3.0.0间接
npmmdast-util-find-and-replace3.0.1间接
npmmdast-util-from-markdown2.0.2间接
npmmdast-util-frontmatter2.0.1间接
npmmdast-util-gfm3.0.0间接
npmmdast-util-gfm-autolink-literal2.0.1间接
npmmdast-util-gfm-footnote2.0.0间接
npmmdast-util-gfm-strikethrough2.0.0间接
npmmdast-util-gfm-table2.0.0间接
npmmdast-util-gfm-task-list-item2.0.0间接
npmmdast-util-mdx3.0.0间接
npmmdast-util-mdx-expression2.0.1间接
npmmdast-util-mdx-jsx3.1.3间接
npmmdast-util-mdxjs-esm2.0.1间接
npmmdast-util-phrasing4.1.0间接
npmmdast-util-to-hast13.2.0间接
npmmdast-util-to-markdown2.1.2间接
npmmdast-util-to-string4.0.0间接
npmmdn-data2.0.28间接
npmmdn-data2.0.30间接
npmmedia-typer0.3.0间接
npmmemfs3.5.3间接
npmmerge-descriptors1.0.3间接
npmmerge-stream2.0.0间接
npmmerge21.4.1间接
npmmethods1.1.2间接
npmmicromark4.0.1间接
npmmicromark-core-commonmark2.0.2间接
npmmicromark-extension-directive3.0.2间接
npmmicromark-extension-frontmatter2.0.0间接
npmmicromark-extension-gfm3.0.0间接
npmmicromark-extension-gfm-autolink-literal2.1.0间接
npmmicromark-extension-gfm-footnote2.1.0间接
npmmicromark-extension-gfm-strikethrough2.1.0间接
npmmicromark-extension-gfm-table2.1.0间接
npmmicromark-extension-gfm-tagfilter2.0.0间接
npmmicromark-extension-gfm-task-list-item2.1.0间接
npmmicromark-extension-mdx-expression3.0.0间接
npmmicromark-extension-mdx-jsx3.0.1间接
npmmicromark-extension-mdx-md2.0.0间接
npmmicromark-extension-mdxjs3.0.0间接
npmmicromark-extension-mdxjs-esm3.0.0间接
npmmicromark-factory-destination2.0.1间接
npmmicromark-factory-label2.0.1间接
npmmicromark-factory-mdx-expression2.0.2间接
npmmicromark-factory-space1.1.0间接
npmmicromark-factory-space2.0.1间接
npmmicromark-factory-title2.0.1间接
npmmicromark-factory-whitespace2.0.1间接
npmmicromark-util-character1.2.0间接
npmmicromark-util-character2.1.1间接
npmmicromark-util-chunked2.0.1间接
npmmicromark-util-classify-character2.0.1间接
npmmicromark-util-combine-extensions2.0.1间接
npmmicromark-util-decode-numeric-character-reference2.0.2间接
npmmicromark-util-decode-string2.0.1间接
npmmicromark-util-encode2.0.1间接
npmmicromark-util-events-to-acorn2.0.2间接
npmmicromark-util-html-tag-name2.0.1间接
npmmicromark-util-normalize-identifier2.0.1间接
npmmicromark-util-resolve-all2.0.1间接
npmmicromark-util-sanitize-uri2.0.1间接
npmmicromark-util-subtokenize2.0.2间接
npmmicromark-util-symbol1.1.0间接
npmmicromark-util-symbol2.0.1间接
npmmicromark-util-types1.1.0间接
npmmicromark-util-types2.0.1间接
npmmicromatch4.0.8间接
npmmime1.6.0间接
npmmime-db1.33.0间接
npmmime-db1.52.0间接
npmmime-db1.53.0间接
npmmime-types2.1.18间接
npmmime-types2.1.35间接
npmmimic-fn2.1.0间接
npmmimic-response3.1.0间接
npmmimic-response4.0.0间接
npmmini-css-extract-plugin2.9.2间接
npmminimalistic-assert1.0.1间接
npmminimatch3.1.2间接
npmminimist1.2.8间接
npmmrmime2.0.0间接
npmms2.0.0间接
npmms2.1.3间接
npmmulticast-dns7.2.5间接
npmnanoid3.3.7间接
npmnegotiator0.6.3间接
npmnegotiator0.6.4间接
npmneo-async2.6.2间接
npmno-case3.0.4间接
npmnode-emoji2.1.3间接
npmnode-forge1.3.1间接
npmnode-releases2.0.18间接
npmnormalize-path3.0.0间接
npmnormalize-range0.1.2间接
npmnormalize-url8.0.1间接
npmnpm-run-path4.0.1间接
npmnprogress0.2.0间接
npmnth-check2.1.1间接
npmnull-loader4.0.1间接
npmobject-assign4.1.1间接
npmobject-inspect1.13.3间接
npmobject-keys1.1.1间接
npmobject.assign4.1.5间接
npmobuf1.1.2间接
npmon-finished2.4.1间接
npmon-headers1.0.2间接
npmonce1.4.0间接
npmonetime5.1.2间接
npmopen8.4.2间接
npmopener1.5.2间接
npmp-cancelable3.0.0间接
npmp-limit2.3.0间接
npmp-limit3.1.0间接
npmp-limit4.0.0间接
npmp-locate3.0.0间接
npmp-locate5.0.0间接
npmp-locate6.0.0间接
npmp-map4.0.0间接
npmp-retry4.6.2间接
npmp-try2.2.0间接
npmpackage-json8.1.1间接
npmparam-case3.0.4间接
npmparent-module1.0.1间接
npmparse-entities4.0.1间接
npmparse-json5.2.0间接
npmparse-numeric-range1.3.0间接
npmparse57.2.1间接
npmparse5-htmlparser2-tree-adapter7.1.0间接
npmparseurl1.3.3间接
npmpascal-case3.1.2间接
npmpath-exists3.0.0间接
npmpath-exists4.0.0间接
npmpath-exists5.0.0间接
npmpath-is-absolute1.0.1间接
npmpath-is-inside1.0.2间接
npmpath-key3.1.1间接
npmpath-parse1.0.7间接
npmpath-to-regexp0.1.10间接
npmpath-to-regexp1.9.0间接
npmpath-to-regexp3.3.0间接
npmpath-type4.0.0间接
npmpicocolors1.1.1间接
npmpicomatch2.3.1间接
npmpkg-dir7.0.0间接
npmpkg-up3.1.0间接
npmpostcss8.4.49间接
npmpostcss-calc9.0.1间接
npmpostcss-colormin6.1.0间接
npmpostcss-convert-values6.1.0间接
npmpostcss-discard-comments6.0.2间接
npmpostcss-discard-duplicates6.0.3间接
npmpostcss-discard-empty6.0.3间接
npmpostcss-discard-overridden6.0.2间接
npmpostcss-discard-unused6.0.5间接
npmpostcss-loader7.3.4间接
npmpostcss-merge-idents6.0.3间接
npmpostcss-merge-longhand6.0.5间接
npmpostcss-merge-rules6.1.1间接
npmpostcss-minify-font-values6.1.0间接
npmpostcss-minify-gradients6.0.3间接
npmpostcss-minify-params6.1.0间接
npmpostcss-minify-selectors6.0.4间接
npmpostcss-modules-extract-imports3.1.0间接
npmpostcss-modules-local-by-default4.1.0间接
npmpostcss-modules-scope3.2.1间接
npmpostcss-modules-values4.0.0间接
npmpostcss-normalize-charset6.0.2间接
npmpostcss-normalize-display-values6.0.2间接
npmpostcss-normalize-positions6.0.2间接
npmpostcss-normalize-repeat-style6.0.2间接
npmpostcss-normalize-string6.0.2间接
npmpostcss-normalize-timing-functions6.0.2间接
npmpostcss-normalize-unicode6.1.0间接
npmpostcss-normalize-url6.0.2间接
npmpostcss-normalize-whitespace6.0.2间接
npmpostcss-ordered-values6.0.2间接
npmpostcss-reduce-idents6.0.3间接
npmpostcss-reduce-initial6.1.0间接
npmpostcss-reduce-transforms6.0.2间接
npmpostcss-selector-parser6.1.2间接
npmpostcss-selector-parser7.0.0间接
npmpostcss-sort-media-queries5.2.0间接
npmpostcss-svgo6.0.3间接
npmpostcss-unique-selectors6.0.4间接
npmpostcss-value-parser4.2.0间接
npmpostcss-zindex6.0.2间接
npmpretty-error4.0.0间接
npmpretty-time1.1.0间接
npmprism-react-renderer2.4.0间接
npmprismjs1.29.0间接
npmprocess-nextick-args2.0.1间接
npmprompts2.4.2间接
npmprop-types15.8.1间接
npmproperty-information6.5.0间接
npmproto-list1.2.4间接
npmproxy-addr2.0.7间接
npmpunycode2.3.1间接
npmpupa3.1.0间接
npmqs6.13.0间接
npmqueue6.0.2间接
npmqueue-microtask1.2.3间接
npmquick-lru5.1.1间接
npmrandombytes2.1.0间接
npmrange-parser1.2.0间接
npmrange-parser1.2.1间接
npmraw-body2.5.2间接
npmraw-loader4.0.2间接
npmrc1.2.8间接
npmreact18.3.1间接
npmreact-dev-utils12.0.1间接
npmreact-dom18.3.1间接
npmreact-error-overlay6.0.11间接
npmreact-fast-compare3.2.2间接
npmreact-helmet-async1.3.0间接
npmreact-is16.13.1间接
npmreact-json-view-lite1.5.0间接
npmreact-loadable-ssr-addon-v5-slorber1.0.1间接
npmreact-router5.3.4间接
npmreact-router-config5.1.1间接
npmreact-router-dom5.3.4间接
npmreadable-stream2.3.8间接
npmreadable-stream3.6.2间接
npmreaddirp3.6.0间接
npmreading-time1.5.0间接
npmrechoir0.6.2间接
npmrecma-build-jsx1.0.0间接
npmrecma-jsx1.0.0间接
npmrecma-parse1.0.0间接
npmrecma-stringify1.0.0间接
npmrecursive-readdir2.2.3间接
npmregenerate1.4.2间接
npmregenerate-unicode-properties10.2.0间接
npmregenerator-runtime0.14.1间接
npmregenerator-transform0.15.2间接
npmregexpu-core6.1.1间接
npmregistry-auth-token5.0.2间接
npmregistry-url6.0.1间接
npmregjsgen0.8.0间接
npmregjsparser0.11.2间接
npmrehype-raw7.0.0间接
npmrehype-recma1.0.0间接
npmrelateurl0.2.7间接
npmremark-directive3.0.0间接
npmremark-emoji4.0.1间接
npmremark-frontmatter5.0.0间接
npmremark-gfm4.0.0间接
npmremark-mdx3.1.0间接
npmremark-parse11.0.0间接
npmremark-rehype11.1.1间接
npmremark-stringify11.0.0间接
npmrenderkid3.0.0间接
npmrepeat-string1.6.1间接
npmrequire-from-string2.0.2间接
npmrequire-like0.1.2间接
npmrequires-port1.0.0间接
npmresolve1.22.8间接
npmresolve-alpn1.2.1间接
npmresolve-from4.0.0间接
npmresolve-pathname3.0.0间接
npmresponselike3.0.0间接
npmretry0.13.1间接
npmreusify1.0.4间接
npmrimraf3.0.2间接
npmrtl-detect1.1.2间接
npmrtlcss4.3.0间接
npmrun-parallel1.2.0间接
npmsafe-buffer5.1.2间接
npmsafe-buffer5.2.1间接
npmsafer-buffer2.1.2间接
npmsax1.4.1间接
npmscheduler0.23.2间接
npmschema-utils2.7.0间接
npmschema-utils3.3.0间接
npmschema-utils4.2.0间接
npmsearch-insights2.17.2间接
npmsection-matter1.0.0间接
npmselect-hose2.0.0间接
npmselfsigned2.4.1间接
npmsemver6.3.1间接
npmsemver7.6.3间接
npmsemver-diff4.0.0间接
npmsend0.19.0间接
npmserialize-javascript6.0.2间接
npmserve-handler6.1.6间接
npmserve-index1.9.1间接
npmserve-static1.16.2间接
npmset-function-length1.2.2间接
npmsetprototypeof1.1.0间接
npmsetprototypeof1.2.0间接
npmshallow-clone3.0.1间接
npmshallowequal1.1.0间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmshell-quote1.8.1间接
npmshelljs0.8.5间接
npmside-channel1.0.6间接
npmsignal-exit3.0.7间接
npmsirv2.0.4间接
npmsisteransi1.0.5间接
npmsitemap7.1.2间接
npmskin-tone2.0.0间接
npmslash3.0.0间接
npmslash4.0.0间接
npmsnake-case3.0.4间接
npmsockjs0.3.24间接
npmsort-css-media-queries2.2.0间接
npmsource-map0.6.1间接
npmsource-map0.7.4间接
npmsource-map-js1.2.1间接
npmsource-map-support0.5.21间接
npmspace-separated-tokens2.0.2间接
npmspdy4.0.2间接
npmspdy-transport3.0.0间接
npmsprintf-js1.0.3间接
npmsrcset4.0.0间接
npmstatuses1.5.0间接
npmstatuses2.0.1间接
npmstd-env3.8.0间接
npmstring-width4.2.3间接
npmstring-width5.1.2间接
npmstring_decoder1.1.1间接
npmstring_decoder1.3.0间接
npmstringify-entities4.0.4间接
npmstringify-object3.3.0间接
npmstrip-ansi6.0.1间接
npmstrip-ansi7.1.0间接
npmstrip-bom-string1.0.0间接
npmstrip-final-newline2.0.0间接
npmstrip-json-comments2.0.1间接
npmstrip-json-comments3.1.1间接
npmstyle-to-object0.4.4间接
npmstyle-to-object1.0.8间接
npmstylehacks6.1.1间接
npmsupports-color7.2.0间接
npmsupports-color8.1.1间接
npmsupports-preserve-symlinks-flag1.0.0间接
npmsvg-parser2.0.4间接
npmsvgo3.3.2间接
npmtapable1.1.3间接
npmtapable2.2.1间接
npmterser5.36.0间接
npmterser-webpack-plugin5.3.10间接
npmtext-table0.2.0间接
npmthunky1.1.0间接
npmtiny-invariant1.3.3间接
npmtiny-warning1.0.3间接
npmto-regex-range5.0.1间接
npmtoidentifier1.0.1间接
npmtotalist3.0.1间接
npmtrim-lines3.0.1间接
npmtrough2.2.0间接
npmtslib2.8.1间接
npmtype-fest0.21.3间接
npmtype-fest1.4.0间接
npmtype-fest2.19.0间接
npmtype-is1.6.18间接
npmtypedarray-to-buffer3.1.5间接
npmtypescript5.2.2间接
npmundici-types6.19.8间接
npmunicode-canonical-property-names-ecmascript2.0.1间接
npmunicode-emoji-modifier-base1.0.0间接
npmunicode-match-property-ecmascript2.0.0间接
npmunicode-match-property-value-ecmascript2.2.0间接
npmunicode-property-aliases-ecmascript2.1.0间接
npmunified11.0.5间接
npmunique-string3.0.0间接
npmunist-util-is6.0.0间接
npmunist-util-position5.0.0间接
npmunist-util-position-from-estree2.0.0间接
npmunist-util-stringify-position4.0.0间接
npmunist-util-visit5.0.0间接
npmunist-util-visit-parents6.0.1间接
npmuniversalify2.0.1间接
npmunpipe1.0.0间接
npmupdate-browserslist-db1.1.1间接
npmupdate-notifier6.0.2间接
npmuri-js4.4.1间接
npmurl-loader4.1.1间接
npmutil-deprecate1.0.2间接
npmutila0.4.0间接
npmutility-types3.11.0间接
npmutils-merge1.0.1间接
npmuuid8.3.2间接
npmvalue-equal1.0.1间接
npmvary1.1.2间接
npmvfile6.0.3间接
npmvfile-location5.0.3间接
npmvfile-message4.0.2间接
npmwatchpack2.4.2间接
npmwbuf1.7.3间接
npmweb-namespaces2.0.1间接
npmwebpack5.96.1间接
npmwebpack-bundle-analyzer4.10.2间接
npmwebpack-dev-middleware5.3.4间接
npmwebpack-dev-server4.15.2间接
npmwebpack-merge5.10.0间接
npmwebpack-merge6.0.1间接
npmwebpack-sources3.2.3间接
npmwebpackbar6.0.1间接
npmwebsocket-driver0.7.4间接
npmwebsocket-extensions0.1.4间接
npmwhich1.3.1间接
npmwhich2.0.2间接
npmwidest-line4.0.1间接
npmwildcard2.0.1间接
npmwrap-ansi7.0.0间接
npmwrap-ansi8.1.0间接
npmwrappy1.0.2间接
npmwrite-file-atomic3.0.3间接
npmws7.5.10间接
npmws8.18.0间接
npmxdg-basedir5.1.0间接
npmxml-js1.6.11间接
npmyallist3.1.1间接
npmyaml1.10.2间接
npmyocto-queue0.1.0间接
npmyocto-queue1.1.1间接
npmzwitch2.0.4间接
依赖安全公告 39

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

软件包版本关系严重程度公告数修复版本
shell-quote1.8.1间接严重21.9.0
@babel/plugin-transform-modules-systemjs7.25.9间接18.0.0-alpha.13
brace-expansion1.1.11间接55.0.9
fast-uri3.0.3间接54.1.2
image-size1.1.1间接12.0.2
js-yaml3.14.1间接34.3.0
js-yaml4.1.0间接34.3.0
lodash4.17.21间接34.18.0
minimatch3.1.2间接310.2.3
node-forge1.3.1间接71.4.0
path-to-regexp0.1.10间接20.1.13
picomatch2.3.1间接24.0.4
postcss8.4.49间接48.5.23
serialize-javascript6.0.2间接27.0.5
svgo3.3.2间接24.0.2
uuid8.3.2间接113.0.1
websocket-driver0.7.4间接20.7.5
ws7.5.10间接18.21.0
ws8.18.0间接28.21.0
@babel/helpers7.26.0间接18.0.0-alpha.17
@babel/runtime7.26.0间接18.0.0-alpha.17
@babel/runtime-corejs37.26.0间接18.0.0-alpha.17
ajv6.12.6间接18.18.0
ajv8.17.1间接18.18.0
estree-util-value-to-estree3.2.1间接13.3.3
follow-redirects1.15.9间接11.16.0
http-proxy-middleware2.0.7间接34.1.0
joi17.13.3间接118.2.1
mdast-util-to-hast13.2.0间接113.2.1
nanoid3.3.7间接15.0.9
prismjs1.29.0间接11.30.0
qs6.13.0间接36.15.2
webpack-dev-server4.15.2间接65.2.6
yaml1.10.2间接12.8.3
@babel/core7.26.0间接18.0.0-rc.6
body-parser1.20.3间接12.3.0
launch-editor2.9.1间接18.0.16
on-headers1.0.2间接11.1.0
webpack5.96.1间接25.104.1

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

原始 JSON 报告 机器可读
{
  "data": {
    "icon": {
      "bytes": 15406,
      "width": 48,
      "height": 48,
      "rejected": [],
      "collected": true,
      "media_type": "image/vnd.microsoft.icon",
      "source_url": "https://flipbook-labs.github.io/flipbook/img/favicon.ico",
      "source_type": "homepage",
      "content_hash": "9a59f8381d292660a6f4df044e26d4411046ecf4f1a9746b7d458d9f4e352763",
      "candidates_considered": 1
    },
    "repo": {
      "topics": [
        "roblox",
        "plugin",
        "storybook",
        "roact"
      ],
      "is_fork": false,
      "size_kb": 18979,
      "has_wiki": false,
      "homepage": "https://flipbook-labs.github.io/flipbook/",
      "languages": {
        "Luau": 323115
      },
      "pushed_at": "2026-07-30T16:00:04Z",
      "created_at": "2021-12-30T22:19:47Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-26T13:48:29Z",
      "description": "Storybook plugin for Roblox UI",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Luau",
      "significant_languages": [
        "Luau"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "flipbook-labs",
      "company": null,
      "location": null,
      "followers": 14,
      "avatar_url": "https://avatars.githubusercontent.com/u/132705396?v=4",
      "created_at": "2023-05-05T19:02:58Z",
      "is_verified": null,
      "public_repos": 16,
      "account_age_days": 1187
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2026-04-10T15:51:08Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2025-12-21T22:24:23Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2025-10-09T19:12:45Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2025-09-10T22:57:29Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2025-09-04T18:11:06Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2024-11-21T18:49:46Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2024-11-03T04:46:17Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2023-04-23T04:24:04Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2023-02-20T18:21:51Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2023-02-18T20:45:26Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2023-01-29T21:42:08Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2023-01-09T01:04:06Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2022-12-26T20:14:47Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "8b74d51dae999250913b3c3646e17fa2b53fd6e5",
          "body": ">[!NOTE]\n> Hello 👋 Human here 🧍\n>\n> I [saw this prompt on\nReddit](https://www.reddit.com/r/ClaudeAI/comments/1ukynrw/comment/ov17362/)\nand this PR is the culmination of letting Fable 5 run wild with it. And\nthen several rounds of my own reviews to tighten it up. It significantly\nchanges the way the \n[…]\ny scoped to their branch so they\ncan't be mistaken for facts on main.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add an agent skill library under .agents/skills (#605)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-07-05T18:02:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "78d71e8fdab1b5563e5ff7577ceab5a822857f2a",
          "body": "# Problem\n\nA feature we've been needing for a long time is the ability to embed\nFlipbook into an experience so that playing the experience opens up\nFlipbook just like in Studio. Main motivation is for engineers and\ndesigners (and any other stakeholders) to be able to collaborate on the\nimplementatio\n[…]\nipbook/pull/582#issuecomment-4771172047)\nwhich link directly to the storybook experience for 1-click joins.\n\nCloses #49 \nCloses #274\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Embed Flipbook in the DataModel (#582)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-28T20:47:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ab8e97bf8aa37a31580cddaf0ea31e2677da6f60",
          "body": "## Problem\n\nFor the Storybook Embedding workstream we're introducing a new\nclient-side entrypoint. This entrypoint runs at user-level security, so\nthere's no access to the Plugin instance or any other special APIs.\nBecause Flipbook was architected as a plugin we need a way for the new\nlower security\n[…]\ne all good\n\n## Notes for reviewers\n\n<!-- (Optional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Introduce Pluginlike type to decouple from the Plugin instance (#598)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-21T21:13:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aaf8d0524d54ea6abf8f87da5547b24965a3aa2c",
          "body": "# Problem\n\nThe plugin binary build and `packToRbxm` each duplicate the same logic\nto produce an rbxm: write a temp `default.project.json` via\n`createRojoProjectAsync`, shell out to `rojo build`, then clean up the\ntemp file.\n\n# Solution\n\nThis PR adds a `rojoBuild` helper that takes a project table an\n[…]\n easier now since you don't need to\nspecify the project to serve with\n\nSplit out of #582. Extended it a bit more since then, though.\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Consolidate Rojo building logic (#586)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-21T21:04:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d045ce953ce9e785603d48cc2ef3ab8df018c0b",
          "body": "## Problem\n\nI broke the dev build in\nhttps://github.com/flipbook-labs/flipbook/pull/583 when introducing the\nnew \"beta\" channel. @greptileai actually surfaced the issue but I forgot\nto handle it before merging\n\n## Solution\n\nTo address this, we're now properly mapping the `--channel` option to\nthe ri\n[…]\nptional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix the dev build failing to deploy (#596)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-21T17:22:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc14ac2f507b317a9bd1f50567892b20fd1803c4",
          "body": "## Problem\n\n<!-- Why are we making this change? Link the issue if there is one. -->\n\nWe need to extend our ObjectControl to a more generalized component for\nthe Storybook Embedding work so we can prompt the user in a Dialog to\nselect an instance to embed into. ObjectControl is specific to the\ncontro\n[…]\ncommon -->\n\n## Notes for reviewers\n\n<!-- (Optional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Extract InstancePicker component from ObjectControl (#597)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-18T02:39:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e62eb04332b5f15775ce42b1e3b364399ba144ff",
          "body": "## Problem\n\nI've been getting reports for a while that Flipbook keeps popping up\nwhen it's not supposed to. I think this is probably because we have\n`initEnabled=true` for the dock widget. I've seen first-hand how often\nRoblox Studio's layout can get reset, so maybe that's also part of\nwhat's trigge\n[…]\nhe expected size\n\nHere's a screenshot:\n\n<img width=\"846\" height=\"646\" alt=\"Screenshot 2026-06-13 at 2 38 48 PM\"\nsrc=\"https://github.com/user-attachments/assets/f0d84cd2-0861-468f-b950-94c235de6fce\"\n/>",
          "is_bot": false,
          "headline": "Try and stop Flipbook from popping up uninvited (#593)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-15T18:47:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5926ea2dbdb77ff830c7e3ba6e37c3647c0bc1e4",
          "body": "# Problem\n\nFlipbook has a few different build variants and it can be difficult to\ntell what it is just by looking at the plugin\n\n# Solution\n\nAdded some new badges that show up in special builds to differentiate\nthe Flipbook variants.\n\nAlso took this opportunity to introduce a new \"Beta\" channel whic\n[…]\nldn't even scroll and I needed to find a good icon for the Beta\nbadge. So I fixed it up anyway, might as well commit it\n\nCloses #425\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Display badges for special environments (#583)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-15T18:40:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "630354f3d94382de13d0a01ed5f993c98835133c",
          "body": "## Problem\n\nWhile scrolling through the BuilderIcons in #583 I noticed there's a\nGitHub icon we could reuse. We've been using our own GitHubMark.png and\nit's one of only two custom images we have. The other being the Flipbook\nlogo itself. I've been eager to get rid of the GitHub one, and now we\ncan!\n[…]\nidth=\"543\" height=\"532\" alt=\"Screenshot 2026-06-13 at 12 41 41 PM\"\nsrc=\"https://github.com/user-attachments/assets/8fb80733-f5c7-49c0-a780-72ac483e5654\"\n/>\n\n\n## Testing\n\nManually verified in the story",
          "is_bot": false,
          "headline": "Use BuilderIcons for the GitHub icon (#594)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-15T18:38:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "60fc52ebfe68305af9e6f1fb6523fcbb2cffca7f",
          "body": "Lifted out of the agents PR (#581) to keep that change focused.\n\nMakes it possible to consume the built `flipbook-core-rotriever`\nartifact as a path dependency in another `rotriever.toml`:\n\n\n- Copy the canonical `workspace/flipbook-core/rotriever.toml` directly\ninto the artifact, rather than searchi\n[…]\nas resulting in accidentally copying TestEZ's\n`rotriever.toml`\n- Point our `rotriever.toml` to the right path (`src` instead of\n`build`.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
          "is_bot": false,
          "headline": "Make the Rotriever bundle consumable as a path dependency (#584)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-10T15:27:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e0bab5cfddceee2ff469fd1b378d772257c34a7",
          "body": "# Problem\n\nAgents keep leaving garbage code comments that assume the reader knows\nthe previous code intimately and would get value out of a comment\ndescribing the past state to now to get up to speed. But that's an\ninsane way to write comments. If for no other reason than that being\nsuch a ridiculou\n[…]\nosts.\n\nAnyway the solution was to write a strongly worded letter to my agent to\nmake it fill out this PR with my commenting guidance\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Give agents guidance on commenting standards (#590)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-10T15:19:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "05a75a6fa6372758137d8a2c6dbe4e93d19ef5ca",
          "body": "# Problem\n\nFlipbook has nuance that agents are frequently getting tripped up on,\nsuch as not knowing how to use Lute properly for running all the custom\nscripts we have for the project.\n\n# Solution\n\nI'm now starting to build out an `AGENTS.md` file along with various\nskills for agents to reference. \n[…]\nmanage it no problem. It's\nbeen making it much easier to iterate on our dependencies before\nbringing them into Flipbook's prod paths\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Skills and instructions for agents 🤖 (#581)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-06-09T03:07:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "371d775247e4f4b24ee86300ddfaa7c06b1d1c4b",
          "body": "# Problem\n\nAny time a control is changed the entire controls panel is re-rendered,\nincluding each individual control. This leads to visual artifacts when\ninteracting with the controls panel, and can also cause warnings to\npopup in the output, I presume from how many re-renders are occurring.\n\n# Solu\n[…]\n makes it easier to write/test the logic\nbefore funneling it into the React scheduler.\n\nNow we should be getting localized updates only to the components that\nneed to be rerendered\n\nBuilds off of #465",
          "is_bot": false,
          "headline": "Fix all control elements rerendering when one is changed (#576)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-05-30T16:48:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1d438478834df1bf9fc8dd32ea7040f71525ce09",
          "body": "# Problem\n\nWe want to be able to support using Instances from the DataModel as\ncontrol values. A similar kind of Instance selection like UI Labs\noffers, and what the Properties panel natively offers with things like\nObjectValues.\n\n# Solution\n\nThis PR sets up all the UI necessary for a new Object con\n[…]\nStoryteller PR that adds the scaffolding for the Object\ncontrol: https://github.com/flipbook-labs/storyteller/pull/116\n\n\nhttps://github.com/user-attachments/assets/fba2a250-2d5d-40e7-9f62-0c465038008d",
          "is_bot": false,
          "headline": "Object control type (#579)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-05-30T16:45:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd8cac8b32d2a2a70a0943b72027bd701b9d2645",
          "body": "# Problem\n\nI threw together [basic dotenv functionality in\nFlipbookBatteries](https://github.com/flipbook-labs/flipbook-batteries/blob/7a5bf190a91c45f0fb70c9cb977a867638151147/src/dotenv.luau)\nbut it leaves much to be desired.\n\n# Solution\n\nThankfully Lute has a package manager now! And there's a dotenv package!\nLet's use it!",
          "is_bot": false,
          "headline": "Use a proper dotenv package (#569)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-05-13T00:05:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e019669a650f4c2df1267eecad261de1c63aeeec",
          "body": "# Problem\n\nBuilderIcons is the font-based icon library that pairs with Foundation.\nThere's a ton of icons, and right now there's no easy way to search or\neven view them, so we're mostly shooting blind when picking from the\nliterally-named icons\n\n# Solution\n\nAdded a story for internal purposes that l\n[…]\ns. And I don't want to write\nour own.\n\n<img width=\"1125\" height=\"561\" alt=\"Screenshot 2026-04-18 at 4 13 04 PM\"\nsrc=\"https://github.com/user-attachments/assets/8685fb02-ab15-42a4-b199-eb1dbc415c2d\"\n/>",
          "is_bot": false,
          "headline": "Add a story to list all the BuilderIcons (#543)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-05-13T00:05:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "14bbd2cd190de88b399d5030eb7ef7be27e5e65c",
          "body": "# Problem\n\nA ton of work has gone into\n[Storyteller](https://github.com/flipbook-labs/storyteller) to get it\nsetup with a new controls schema that allows for a ton of new control\ntypes, like Color3, DateTime, MultiSelect, and improvements to existing\ncontrols for primitives like numbers, strings, an\n[…]\n data types\n* New, more flexible control schema\n* Backwards compatibility with current controls schema\n* Helper functions for creating controls\n\n---------\n\nCo-authored-by: Copilot <copilot@github.com>",
          "is_bot": false,
          "headline": "Revamp available control types (#465)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-05-04T23:38:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f4a1f4d9fc4873c5e20982af650aa91f65f71aba",
          "body": "# Problem\n\nLute's first official release was just published and we want to start\nusing it!\n\n# Solution\n\nBumped the version in `rokit.toml` to point to Lute v1.0.0. Lot of\nchanges needed to get this all operational from there:\n\n1. Fixed all casing of Lute's API members\n2. Fixed paths to Lute packages\n3. Lute batteries are now installed via Loom, and adhoc installation has\nbeen removed from `install.luau`\n4. FlipbookBatteries has been bumped to v0.9.0 (from v0.7.0)",
          "is_bot": false,
          "headline": "Lute version bump and API usage fixes (#553)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-21T18:56:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c99759266ab02f61a6561be057d606dc69a2718",
          "body": "# Problem\n\nI feel like I've been fighting up a stream trying to intermingle\n`pull_request_target` in our existing workflows. I think there's a\nbetter way I could be doing this.\n\nAlso tests started failing because of `pull_request_target` not checking\nout any of the changed code before running tests.\n[…]\n by\na PR. But since the jobs in this workflow are intended to require manual\napproval (after reviewing the PR changes), this should be ok in practice\n\n Fingers crossed this helps with all the friction",
          "is_bot": false,
          "headline": "Isolate the surface area of `pull_request_target` (#563)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-19T00:03:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "758b31b613b5fe8437849b4498c40fa69f6af45c",
          "body": "Upgrading RobloxPackages to 0.716.0.7160873\n\nPlease carefully test these changes before merging. These packages can\nand will change out from under us with no warning.\n\nThis pull request was generated by [this\nrun](https://github.com/flipbook-labs/flipbook/actions/runs/24160050778).\n\n---------\n\nCo-authored-by: vocksel <3081936+vocksel@users.noreply.github.com>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
          "is_bot": true,
          "headline": "[AUTO-GENERATED] Upgrade RobloxPackages to 0.716.0.7160873 (#555)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-18T23:05:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64ed0047237cec53182ba1bf65762b1d3048d2f2",
          "body": "# Problem\n\nWe have concurrency setup for the plugin deployment smoketest but this\nseems to interact weirdly with deployment approvals. It makes sense for\nprod and dev deployments to be concurrent, but for the smoketest we\ndon't care which plugin makes it to the Creator Store, we just want to\nknow th\n[…]\nfit of leveraging the same `luau-execution-gated`\nlogic, too. I like this better since it keeps all the hair\n`pull_request_target` logic in the same place. _And_ one less deployment\nto have to approve",
          "is_bot": false,
          "headline": "Fix smoketest deployments cancelling each other (#562)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-18T22:56:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b89c5adb1163a3b29c561ac75aa0f575d5a49bd1",
          "body": "# Problem\n\nWith the recent switch to pull_request_target (#559) we hit an issue\nwhere the development build was being deployed right from PRs.\n\n# Solution\n\nThis is hopefully a simple condition change. Changing the intent from\n\"deploy when run from `main`\" (which is now always true) to \"deploy for\neverything that's not a PR,\" which I believe in this case will match our\nsame needs",
          "is_bot": false,
          "headline": "Fix dev deployments triggering for all PRs (#561)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-18T19:07:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d1bc9282ae0989eb88c2cfa412b2eef29c31ce1",
          "body": "Currently, the repo uses an outdated version of selene (0.29.0), which\ndoes not support require-by-string. In addition, it improperly uses\n`UDim2.new(x, y)` instead of `UDim2.fromScale(x, y)`.\n\n# Solution\n\nBump the version of selene to 0.30.1 and remove specific configuration\nfor require-by-string i\n[…]\ntionally left even though it\nproduced a warning? I don't see a reason why to leave it though.\n\n---------\n\nSigned-off-by: Ryan Luu <ryan.luu@ryanluu.dev>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
          "is_bot": false,
          "headline": "Bump selene version to 0.31.1 (#558)",
          "author_name": "Ryan Luu",
          "author_login": "ryanlua",
          "committed_at": "2026-04-18T19:01:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6896cca5a83e1f8b463fe2c33af9807facd46a54",
          "body": "# Problem\n\nFork-based workflows are hitting failures in CI. We have some levers we\ncan pull to make this a better experience, so let's try some things out\n\n# Solution\n\nWe're now using `pull_request_target` which grants some extra\npermissions to the fork's jobs, and I've adjusted environments so that\nanything requiring `ROBLOX_API_KEY` must be approved before it can run",
          "is_bot": false,
          "headline": "Try to support fork workflows (#559)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-18T18:46:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74323ee6838bed4009b67fd1b7833147142803cd",
          "body": "# Problem\n\nI'm trying to setup support for fork workflows in #559 but hit a wall\nwhere none of the required jobs are running. I think I can kickstart\nthem with `workflow_dispatch` but it needs to exist on `main` for that\nto be possible\n\n# Solution\n\nSetup the CI and release workflows to be dispatchable from the GitHub\nUI.",
          "is_bot": false,
          "headline": "Setup workflows to be dispatchable (#560)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-18T17:45:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1eeaaf1aa0c44db1c3dcfebd1e19b2798a13e0c",
          "body": "# Problem\n\nCurrently, there is unnecessary space around the preview, which is\nespecially noticeable on small screens like my 13-inch laptop. It is\nunnecessary because it only pads the separator lines, which already\ndistinctly separate UI sections.\n\n## Before\n\n<img width=\"850\" height=\"577\" alt=\"image\n[…]\n the `padding-large` style tag\nfrom the preview component.\n\n## After\n\n<img width=\"849\" height=\"623\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/041633ee-2507-478b-9805-a5871fe68ba1\"\n/>",
          "is_bot": false,
          "headline": "Remove large padding tag from preview (#557)",
          "author_name": "Ryan Luu",
          "author_login": "ryanlua",
          "committed_at": "2026-04-16T16:53:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "369eaaa8cf48b067e5b1beb35a4bbaee11825e37",
          "body": "# Problem\n\nIt's time for a new Flipbook release! First one of the year\n\n# Solution\n\nBumped our various manifests to v2.5.0. \n\nAlso updated the bump-version script to handle all the updates so we\ndon't have to make them manually",
          "is_bot": false,
          "headline": "Bump version to 2.5.0 (#554)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-09T22:10:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98bb6da9e81d5bdc6b4c1b55e85e3fb21c040ae1",
          "body": "# Problem\n\nI realized while working on #535 that we aren't linting or checking\nformatting on the entire `workspace` dir. Whoops\n\n# Solution\n\nAdded `workspace` as one of the linted folders and fixed up the couple\nissues that it surfaced",
          "is_bot": false,
          "headline": "Code quality checks for the workspace (#536)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-07T16:14:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f21b2bbf4ac308fccd4b2989b53aa2cb36c964fe",
          "body": "# Problem\n\nWe've been coasting off a Python client for interacting with the Luau\nExecution APIs that we use for running our unit tests, but now Roblox\nhas released [rocale-cli](https://github.com/Roblox/rocale-cli) which is\nbetter equipped for this purpose\n\n# Solution\n\nIncredibly easy switch. I remo\n[…]\nitched\nover to `rocale-cli` for running unit tests and it works out of the box.\n\nI made a test fail locally and `lute run test` was setting the correct\nexit code, so test failures should still fail CI",
          "is_bot": false,
          "headline": "Use rocale-cli for running unit tests (#547)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-07T16:12:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f21a0d022f1a85be1a0376629d1466e33b87860c",
          "body": "# Problem\n\nIt's impossible to scroll on the settings page.\n\n# Solution\n\nTurns out the container was shrinking to fit within the canvas. Patched\nthat up by expanding to fit its content.\n\nCloses #541",
          "is_bot": false,
          "headline": "Fix scrolling up/down in settings (#546)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-07T16:11:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eaa5f32c71ddafb0258dc11abdc3d0b989dc788",
          "body": "# Problem\n\nA bunch of Foundation's stories aren't working well. Mostly from bugs\naround handling the Developer Storybook controls schema, along with some\nother issues like differing StoryProps\n\n# Solution\n\n1. Fixed array controls to use the default value if it exists\n2. Bumped ModuleLoader version w\n[…]\ne height, it was way too large before\n\n<img width=\"1169\" height=\"780\" alt=\"Screenshot 2026-04-02 at 8 55 07 AM\"\nsrc=\"https://github.com/user-attachments/assets/3fca39f8-de1e-4e07-8515-23152953ffc2\"\n/>",
          "is_bot": false,
          "headline": "Support for Foundation stories (#549)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-06T17:02:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a5b27460a379bb537a72a08822d5d6a8ba93cfff",
          "body": "Upgrading RobloxPackages to 0.714.0.7141083\n\nPlease carefully test these changes before merging. These packages can\nand will change out from under us with no warning.\n\nThis pull request was generated by [this\nrun](https://github.com/flipbook-labs/flipbook/actions/runs/23565335610).\n\n---------\n\nCo-authored-by: vocksel <3081936+vocksel@users.noreply.github.com>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
          "is_bot": true,
          "headline": "[AUTO-GENERATED] Upgrade RobloxPackages to 0.714.0.7141083 (#542)",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-05T23:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49f1a1d1ab3067b936ae4b0b4431ecb13159b83c",
          "body": "# Problem\n\nOn more crowded screens the menu items along the topbar get cut off. The\nonly way to access them is to increase Flipbook's viewport width.\n\n<img width=\"548\" height=\"223\" alt=\"Screenshot 2026-04-03 at 7 29 25 PM\"\nsrc=\"https://github.com/user-attachments/assets/a018e942-5cc1-4a2f-88e5-1092e\n[…]\nk to fit the rest of the menu items.\n\nIt behaves really well. Foundation made this trivial to get done. Here's\na demo:\n\n\nhttps://github.com/user-attachments/assets/19284620-020e-461a-bdc2-73a9eb0f3804",
          "is_bot": false,
          "headline": "Scrollable topbar (#551)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-04-04T20:29:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3a9254535f3d0c77dd8451447cb217b599836a99",
          "body": "# Problem\n\nI've been hard at work upgrading the foundations of story previewing and\nnow we've got some package upgrades to consume to start using it all.\n\n# Solution\n\nBumped Storyteller to 1.10.0 and ModuleLoader to 0.9.0.\n\nI've tested out these changes on the dev and prod channels. Prod looks\nlike \n[…]\ng well. Dev is having some issues where React stories\ncause some lag when loading.\n\nOverall things seem stable enough that I want to merge it all together\nand fix forward with any issues that crop up.",
          "is_bot": false,
          "headline": "Update Storyteller and ModuleLoader (#545)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-31T15:26:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c386f75b34c7f6ae9a11f1f8d1e00a8b4a78851",
          "body": "# Problem\n\nThe latest nightly build broke from #512. Seems like Darklua really\ndoesn't like absolute paths, which is resulting in string requires not\ngetting resolved. This crashes the plugin when trying to access the\n`@pkg` alias which does not exist in Studio.\n\n# Solution\n\nTo work around this I massaged `SOURCE_PATH` into a relative path to\npass it off to Darklua. Fixes the problem locally when building the\nplugin.\n\nResolves #534",
          "is_bot": false,
          "headline": "Fix broken nightly build (#535)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-20T16:06:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c217397579906a344fc0a95fa224f3161d293cd",
          "body": "# Problem\n\nLute recently added the `@std/path` library but we're still manually\nmanipulating paths. Now is a good time to port over\n\n# Solution\n\nSwapped out all of the manual path building with `@std/path`. All paths\nconstructed with string templates like `{foo}/bar.ext` have been ported\nover to `path.join` calls.\n\nI also took a pass to clean up some `run` calls to instead use native\nLute functions.\n\nDepends on #510 and #511",
          "is_bot": false,
          "headline": "Swap out adhoc path building with `@std/path` (#512)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T15:47:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3834640a6def378622c3d41b7b615c65f28b996e",
          "body": "# Problem\n\nThanks to #523 we no longer have to worry about path limits. By\ncollapsing `Packages` and `RobloxPackages` into rbxms we should\nrealistically never get anywhere close to the limit again. (Please do\nnot make me regret saying that [Mostly speaking to myself btw])\n\n# Solution\n\nCleaned up all the path length checking logic. Feels weird to get to\nremove a bunch of code for once",
          "is_bot": false,
          "headline": "Remove all the path length garbage (#530)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:48:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25bd4ccc044d12d359fbd5c4fcbf989cebbe3730",
          "body": "# Problem\n\nIt's annoying that some scripts will leave around artifacts in the repo\nroot. Mostly thinking of how running analysis will\ndownload`globalDefTypes.d.luau`, and installing packages will include\n`RobloxPackagesTmp` briefly before deleting it, which is ironically\n_more_ annoying because it b\n[…]\ne files in, with the\nassumption that at _some point_ the operating system will take care of\nem for us.\n\nNow these artifacts just go to a temp directory and it never disrupts\nthe Developer Experience 😌",
          "is_bot": false,
          "headline": "Store build artifacts in a temp dir (#529)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:47:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5a25fe4f19c45eb0163eb4f3e230feb302c28dcf",
          "body": "# Problem\n\nChanges to Lute broke FlipbookBatteries' `watch` function. It has since\nbeen patched and we now need to bump the version to consume the latest\nversion\n\n# Solution\n\nBumped FlipbookBatteries to v0.7.0 and patches up our usage of it as\nneeded.\n\nNow when running commands like `lute scripts/build.luau --watch` changes\nto the src folder will properly trigger a rebuild",
          "is_bot": false,
          "headline": "Fix file watching for our Lute scripts (#524)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:44:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9af0fb8dc703d1501816b1d2bc0a40839e3911de",
          "body": "# Problem\n\nOur weekly package upgrade is green but is actually silently failing\nalong the way.\n\n# Solution\n\nTurns out `conclusion` is being reported as `success`, which is intended\nbut not what we want. We should be using `outcome` instead, which gives\nus the outcome of the command, not the conclusi\n[…]\nntinue-on-error is applied.\nPossible values are success, failure, cancelled, or skipped. When a\ncontinue-on-error step fails, the outcome is failure, but the final\nconclusion is success.\"\n\nCloses #525",
          "is_bot": false,
          "headline": "Fix weekly package upgrade (#527)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:38:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "755909ab6512ee815dfb3eca93e00be4c020f2f8",
          "body": "# Problem\n\nThe `StoryProps` object should also include the `plugin` instance to\nsupport Foundation\n\n# Solution\n\nGrab `plugin` from the store and pass it along as extra props. These\nfunnel into the `StoryProps` object that gets passed into each story.\n\nCloses #516",
          "is_bot": false,
          "headline": "Pass the `plugin` instance to StoryProps (#522)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:37:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6beb69239aacbcbde02c1368068d66186ccd3d8",
          "body": "# Problem\n\nOur Lute scripts currently exist in the `scripts` dir, but there exists\nthe special `.lute` directory which gives us some nice functionality\nlike being able to run `lute run <scriptName>` or even `lute\n<scriptName>`.\n\n# Solution\n\nI migrated us over to the `.lute` directory and updated workflows and\nscripts as-needed to get CI passing. Now we can run commands like `lute\nrun analyze` to run static analysis.",
          "is_bot": false,
          "headline": "Move Lute scripts to the special `.lute` dir (#521)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-19T01:34:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf145e39f2a249c640718302032348454c15a5cc",
          "body": "# Problem\n\nI forgot to specify the `name` field, which was resulting in\nPackages.rbxm and RobloxPackages.rbxm having their top-level instances\nnamed as `T`.\n\n# Solution\n\nOne-liner to use the path basename (`\"Packages\"` or `\"RobloxPackages\"`)\nas the instance name. This will hopefully fix the downstream issues.\n\nI verified locally by building `flipbook-core-rotriever` to an rbxm, and\nit looks like Packages and RobloxPackages properly come along for the\nride with this change.",
          "is_bot": false,
          "headline": "Make sure dependency bundles have a name (#526)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-13T16:43:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a6c69b5a90b3be17879835747918609eb3e0d02",
          "body": "…s (#523)\n\n# Problem\n\nThe Rotriever bundle keeps hitting issues when being consumed because\nthe damn paths are too long. Out of the 260 character limit, around half\nthat gets eaten up by CI, and then rest gets eaten up because we're\ncombining two package managers together.\n\nWith a prefix of 80 chara\n[…]\ne is that if this _does_ happen we can rely on it being\nafter CI runs, which is where the issue is cropping up.\n\nOnce we get the artifact into Roblox it should just work. Famous last\nwords, of course.",
          "is_bot": false,
          "headline": "Attempt to defeat path length limit by bundling package blobs as rbxm…",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-12T22:57:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "acf0fa2921049ae22af73b6d9a2761dad0374f54",
          "body": "# Problem\n\nI wanted to adopt Roblox's Signals library for juggling state, though\nthere seem to be better alternatives within the community (see:\n[Charm](https://github.com/littensy/charm)). I also want to reduce the\nnumber of dependencies we consume through `roblox-packages` since those\ncan change w\n[…]\nh made this fairly trivial\nto migrate over.\n\nThere are likely to still be some edge cases from swapping out the\nunderlying implementation of our state management though, so this could\nget hairy later.",
          "is_bot": false,
          "headline": "Switch from Signals to Charm (#509)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-11T01:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3188d698c1d2a4ca5b5b45361aefaa1d68c2520e",
          "body": "# Problem\n\nStoryteller has been updated to use Charm and ReactCharm, and no longer\nuses RobloxPackages. This should take care of the path length issue!\n\n# Solution\n\nBumped Storyteller to 1.8.1 and patched things up along the way.\n\nSince there is likely still a state mutation bug to resolve in\nStoryteller itself I've filed a ticket to track that work:\nhttps://github.com/flipbook-labs/storyteller/issues/100\n\nDepends on #518",
          "is_bot": false,
          "headline": "Bump Storyteller to 1.8.1 (#515)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-10T23:40:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b841b0a2a730f29e3b798a1e56b056b5bca43e6b",
          "body": "# Problem\n\nRan into an issue when consuming FlipbookCore relating to path lengths\ngoing above the 260 limit that some tools have hardcoded (it's a\nnightmare).\n\n# Solution\n\nI've introduced a new check that will add a comment to the PR when it is\ndetected that one or more paths in the Rotriever artifact would go above\nthe 260 character limit.\n\nThis check is non-blocking and simply logs a comment to be resolved\nlater.\n\nCloses #517",
          "is_bot": false,
          "headline": "Include a path length check (#518)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-10T22:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7b8de56cd85cbfac6cbaf3376b646d08e94fd03",
          "body": "# Problem\n\nThe Help > Logs page is all mangled, related to now needing to\nexplicitly pass the `layout` prop to ScrollView to get it to crate a\nUIListLayout.\n\n<img width=\"1125\" height=\"618\" alt=\"Screenshot 2026-03-01 at 8 35 24 PM\"\nsrc=\"https://github.com/user-attachments/assets/c6aea8c6-dd69-4e14-b3\n[…]\ny have it applied.\n\nBack to normal ☺️\n\n<img width=\"1120\" height=\"615\" alt=\"Screenshot 2026-03-01 at 8 32 54 PM\"\nsrc=\"https://github.com/user-attachments/assets/2da6ba77-7e4d-43ec-bc5d-2c8021533a8f\"\n/>",
          "is_bot": false,
          "headline": "Apply `layout` props to all ScrollViews (#514)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-05T20:05:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97d7d1b7b2fca19ff7a3e01a42299312d8190f71",
          "body": "# Problem\n\nWe do a lot of adhoc install steps for some of the dependencies Flipbook\nhas. I've been wanting to start getting rid of some of this logic for a\nlong while now, and with the advent of Lute's package manager, Loom, we\ncan start doing just that!\n\n# Solution\n\nI setup `loom.config.luau` with FlipbookBatteries as a dependency.\n\nI also wanted to get rbxasset working through this flow, but it has a\nbuild step right now that makes that a non-option.",
          "is_bot": false,
          "headline": "Start using Loom for installing luau dependencies (#510)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-02T22:46:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40a7616102f5cb6cba6ef5f4d37ceb64d3cc1c3f",
          "body": "# Problem\n\nThe idea is for the `@std` library to act as the main specification for\nother platforms (like Roblox) to implement. So using `@std` is how we\nmake our code more portable. As such, we should switch to `@std` from\n`@lute` where possible.\n\n# Solution\n\nI migrated over everything I could. There's some usage of `@lute/task`\nand `@lute/crypto` that can't be migrated yet",
          "is_bot": false,
          "headline": "Use `@std` over `@lute` where possible (#511)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-03-02T21:59:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "015d9200113a65272a7b10ddb77abae19bf27c7c",
          "body": "# Problem\n\nWe're behind by several weeks of Roblox Studio versions so it's time for\nan upgrade!\n\n# Solution\n\nPinned RobloxPackages to 0.710.0.7100702 and fixed up issues along the\nway.\n\nThere seem to have been some changes to Signals under the hood that\nchanged when work gets complete",
          "is_bot": false,
          "headline": "Manually upgrade RobloxPackages (#506)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-27T17:29:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4c392b7930fcbfababd9ed43bb7e9ff5d48254b",
          "body": "# Problem\n\nRight now we have to remember to upgrade RobloxPackages manually when\nthere's a new Roblox Studio release. It would be helpful if this could\nbe handled automatically\n\n# Solution\n\nI setup a new workflow that will pull in the latest version of\nRobloxPackages on a schedule. Now we'll be setup with a PR each week\nthat we can build off when consuming the latest changes.\n\nCloses #504",
          "is_bot": false,
          "headline": "Auto upgrade RobloxPackages on a schedule (#505)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-24T22:07:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d62d2604d582d07b01e44e97b1618dda2743d67e",
          "body": "# Problem\n\nI broke deployments again and this will absolutely repeat itself, so\nit's time to add in some guardrails\n\n# Solution\n\nI created a new Flipbook Smoketest asset on the creator store and got it\nsetup with our release process. Now each PR will run through the\ndeployment process to give us some extra certainty that our workflows\nare still operating correctly\n\nCloses #502",
          "is_bot": false,
          "headline": "Smoketests for plugin deployments (#503)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-24T21:44:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dea1ae6b82bcd532fd5aef7a732e3488167566c4",
          "body": "I want to get more people involved with Flipbook, and one way I'm\nnudging us in that direction is that I've now setup CODEOWNERS with a\nsupplementary review group so that members of that group can start\ngetting familiar with the codebase over time",
          "is_bot": false,
          "headline": "Add a secondary review group (#508)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-24T21:43:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16b7e184ed821d35ded4d023ac197e839e660a1d",
          "body": "# Problem\n\nWe repeat ourselves a lot between stories to setup the same context\nproviders. This can be simplified with `mapStory`\n\n# Solution\n\nI setup our FlipbookCore storybook to use `mapStory` so that all of the\nstories it manages will implicitly be setup with all the context\nproviders we use",
          "is_bot": false,
          "headline": "Offload context providers to mapStory (#496)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-18T21:42:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fb4ebb0e23e89177ba185f55f3087a9052285ea",
          "body": "# Problem\n\nWith my change to hoist `Packages` and `RobloxPackages` to the root of\nthe repo (#456), this inadvertently broke the workflow for mirroring\nFlipbookCore to the Roblox org.\n\n# Solution\n\nTo address this issue I'm now setting up the Rotriever builds to happen\nright in this repo. We now const\n[…]\n're\ngoing to have Flipbook build (and provide attestations) for the\nartifacts it produces. This should go a long way towards making usage of\nFlipbookCore safe for third-party consumption.\n\nCloses #486",
          "is_bot": false,
          "headline": "Fixes for mirroring workflow (#500)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-02-18T21:36:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2d34f1625d47d5832932b51c0679ea43fc57e5e1",
          "body": "Just keeping our tools up-to-date. Mostly for Lute. Surprisingly nothing\nbroke too",
          "is_bot": false,
          "headline": "Bump tool versions (#493)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-01-19T18:28:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04bc23da69edec493c02a57192bbf8f4ad082d44",
          "body": "# Problem\n\nWe can use `test.only` to narrow down which test cases run _within_ a\ntest file, but we have no way to filter which test files themselves will\nbe run by Jest\n\n# Solution\n\nI've introduced a `--filter` flag that will fill in Jest's\n`testPathPattern` option. Now we can run commands like the following to\nonly run tests within files that match the pattern:\n```\nlute scripts/test.luau --filter TreeView\n```",
          "is_bot": false,
          "headline": "Add `--filter` option when running tests (#495)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-01-19T18:27:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "23b60801c133a5bc71d346c2b3ce111865ac7d3c",
          "body": "Resolves #483",
          "is_bot": false,
          "headline": "Fix logs unintentionally routing to the Output window (#484)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-01-15T18:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d313d7b6a1e57e6244c77d342c9179cd4f48df79",
          "body": "# Problem\n\nBeen running into warnings in the nightly plugin stating \"failed to\ncommunicate with backend: URL must be http\" which stems from the backend\nURL resolving to `nil`.\n\n<img width=\"986\" height=\"344\" alt=\"Screenshot 2026-01-11 at 10 23 23 AM\"\nsrc=\"https://github.com/user-attachments/assets/51\n[…]\nv.template` to `.env` when\nbuilding the plugin. And I've also added a new check to assert that\n`BACKEND_URL` is defined, which should also help catch other cases where\n`.env` does not get copied over.",
          "is_bot": false,
          "headline": "Fix BACKEND_URL not getting baked into the build (#479)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-01-11T18:33:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ced5e22a4e5f66194b5fc41307dd7f991e487018",
          "body": "# Problem\n\nSee #469\n\n# Solution\n\nI'm now passing the `--plugin` flag to all of our tasks to fix the\nregression from #461\n\nResolves #469",
          "is_bot": false,
          "headline": "Fix VSCode tasks (#471)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2026-01-03T18:40:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "daf9e0fe408f7f730318b265470947e82a7c0541",
          "body": "# Release notes\n\n* Adds a new experimental workspace `flipbook-next` for testing new UI\ndesigns and features",
          "is_bot": false,
          "headline": "Setup new `flipbook-next` workspace (#467)",
          "author_name": "pashleyy",
          "author_login": "passhley",
          "committed_at": "2026-01-02T23:34:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8deec0c14bd7494cc5c41987684f9e4facaa5695",
          "body": "# Problem\n\nWe're now primarily using Foundation which comes with its own themeing.\nAs such, we're now at a point where we can say goodbye to the\nTailwind-based theme we've been using\n\n# Solution\n\nI've gone ahead and removed the `themes.luau` and `tailwind.luau` files\nand adjusted the remaining usage\n[…]\nne of the purple colors in the Extended\npalette, and the latter is just using the same #333333 color as before.\nOnly reason this is a hook instead of stored in constants is because of\nthe tokens usage",
          "is_bot": false,
          "headline": "Remove the rest of the Tailwind-based theme (#463)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-31T20:18:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7e790a38c62e292aa8cf898d7753ca9d1f965c2d",
          "body": "# Problem\n\nDeployments for the development plugin have been failing since Dec 22.\nProd will also hit this same issue on the next release\n\n# Solution\n\nWhen I changed the behavior of the build script to require the\n`--plugin` flag to export an rbxm, this inadvertently broke the release\nworkflow for th\n[…]\ny able to update\nthe publish-plugin script to take in the new flag and verified the dev\nplugin deploys\n\n# Release notes\n\nFixed a bug where the development and production plugins were failing to\ndeploy",
          "is_bot": false,
          "headline": "Fix plugin deployments (#464)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-31T20:18:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ffba6285c6eb0a3b9ee4f88e4397cc33edfef18",
          "body": "# Problem\n\n#407\n\nFlipbook's current theme gets passed as a prop to a story's StoryProps.\nOr rather, that's what should be happening, but we only pass a static\n\"Dark\" value for it.\n\n# Solution\n\nTo address this issue properly I needed to dig into Storyteller to\nimprove how it will build out the final \n[…]\nRelease notes\n\nFixed a bug where the `theme` prop passed to a story would always equal\n`\"Dark\"`. This prop is now dynamic and will update (and trigger a\nre-render for your story) when switching themes",
          "is_bot": false,
          "headline": "UI theme is passed as StoryProps (#409)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-26T20:49:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a004ad52d51f3b5ace2dfb855f7adb4bb25e89b5",
          "body": "# Problem\n\nWe have a lot of useful functions for our Lute scripts that would be\nnice to share between our repos\n\n# Solution\n\nI created https://github.com/flipbook-labs/flipbook-batteries to act as\na dumping grounds for useful Luau/Lute modules that we want to share\nbetween repos. This PR consumes Fl\n[…]\nook-batteries](https://github.com/flipbook-labs/flipbook-batteries)\npackage which holds all of Flipbook's reusable Luau/Lute modules and is\nshared across the other repos we maintain, like Storyteller.",
          "is_bot": false,
          "headline": "Flipbook Batteries (#457)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-23T20:52:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d356bef4608632dd3b2d7b34dbd498c946e72ee5",
          "body": "# Problem\n\nIt would be useful to have logs at various points in the codebase.\nParticularly for core events like app start/stop, but also granular logs\nfor http requests, page navigation, and anything else where it would be\nuseful to have logs to trace the path a user took to reach an error\n\n# Soluti\n[…]\n without\nspamming the Output window.\n\n<img width=\"1317\" height=\"803\" alt=\"Screenshot 2025-12-23 at 12 37\n48 PM\"\nsrc=\"https://github.com/user-attachments/assets/dc476fa8-b813-4f3c-85be-d0137222be6c\"\n/>",
          "is_bot": false,
          "headline": "Logging with new history view (#413)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-23T20:38:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "730110a2d062312ae388f57408274f0426466b1b",
          "body": "# Problem\n\nCurrently Flipbook can only be built by doing a full rebuild. We should\ninstead perform incremental rebuilds\n\n# Solution\n\nLot going on in this PR, to summarize:\n\n1. `compileWorkspaceMember` has been hoisted out of `compile.luau` to\nits own module and renamed to `compileWorkspaceMemberAsyn\n[…]\ntal builds you can now run:\n\n```sh\n$ lute scripts/build.luau --channel dev --no-reload --watch\n```\n\nAnd then run the following to serve the build:\n\n```sh\n$ rojo serve dev.project.json\n```\n\nCloses #460",
          "is_bot": false,
          "headline": "Incremental rebuilds (#461)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-22T22:43:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ad6f5e6c8e42b58c470275e7fc407d0f6d98f8a",
          "body": "… (#462)\n\n# Problem\n\nWe use a mix of aliased paths and relative paths in our Lute scripts and\ntheir modules. For consistency with the workspace, we should exclusively\nuse absolute paths\n\n# Solution\n\nAdded a new `@scripts` alias and updated all of the import paths to use\nthat instead of relative paths",
          "is_bot": false,
          "headline": "Convert all Lute script imports to use absolute paths for consistency…",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-22T18:59:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12d6b17ecea04d13896f6fde87b04764b3ac502a",
          "body": "This PR upgrades Lute from 20251210 to 20251220 (10 day difference).\nThere were some breaking changes to the `fs` library so I've also\nupdated our usage to fix those issues",
          "is_bot": false,
          "headline": "Lute upgrade (#455)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-22T18:46:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48abfbcaeb6560e451787dee929c8a5774425289",
          "body": "# Problem\n\nRobloxPackages is installed into `workspace/flipbook-core` with no way\nfor other workspace members to access it.\n\nMore info about this issue can be found here: #456 \n\n# Solution\n\nI've hoisted all packages to the root of the repo. There is now a\ncentral `wally.toml`, and workspace members \n[…]\nk test locally to see if I could import and use Foundation\nin `workspace/example/src/OrphanedStory.story.luau` and it Just Works,\nso hopefully this is true for all other workspace members\n\nCloses #456",
          "is_bot": false,
          "headline": "Shareable RobloxPackages (#458)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-21T22:30:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3f7702acea16a2c6d955a7052a4023052fae53a6",
          "body": "Getting a version bump ready to go for the next release.\n\nAlso fixes the positional arguments for bump-version.luau",
          "is_bot": false,
          "headline": "Bump to v2.4.0 (#452)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-21T22:23:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "772004c23ca534d77cf5f3293696e25cd3372a4e",
          "body": "# Problem\n\nThe backend service takes care of everything relating to posting\nfeedback now, so we no longer need the supplementary feedback workflow\n\n# Solution\n\nSimply removed the feedback workflow",
          "is_bot": false,
          "headline": "Remove feedback workflow (#450)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-21T22:07:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65d771de71cd8ae3387ecf68d4e59ab3149a12cd",
          "body": "# Problem\n\nLute has had crashes in the past when spawning processes on\n`ubuntu-latest` runners. This issue looks to be resolved, so we should\nswitch off of the more expensive `macos-latest` runners\n\n# Solution\n\nSwitched all jobs from `macos-latest` back to `ubuntu-latest`\n\nCloses #431",
          "is_bot": false,
          "headline": "Switch back to ubuntu-latest runners (#451)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-21T22:06:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a9c9c63c52d6dd35f18d7dd1bfab5b56f6af70b",
          "body": "# Problem\n\nThere was a very noticeable difference in the heights of the `<Topbar\n/>` and the end of where the search bar was and where the file tree\nbegan.\n\n# Solution\n\nFixed this as well as shrunk down the `<Topbar />` buttons back to\n`InputSize.Small`. This may be a personal preference, but I'm trying to\nmaximize viewport areas as much as possible.",
          "is_bot": false,
          "headline": "Fix height misalignment between search and topbar (#454)",
          "author_name": "pashleyy",
          "author_login": "passhley",
          "committed_at": "2025-12-21T22:04:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "631969c41ee892b3280d096966cbd1da0ab005ec",
          "body": "# Problem\n\nWhen trying to copy code from our `<CodeBlock />` component, it was full\nof the rich text from our Highlighter code.\n\n# Solution\n\nSwap between the original source text and the highlighted version\ndepending on if it's focused or not. This does still have it's own\nlittle issue where you need to tap on the code block once so it swaps\nfirst before it lets you start highlighting it all.",
          "is_bot": false,
          "headline": "Fix/improve code block copying qol (#453)",
          "author_name": "pashleyy",
          "author_login": "passhley",
          "committed_at": "2025-12-21T22:04:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "704fbd5bf477fcf6f6b24e90f7248504d6b9ac77",
          "body": "# Problem\n\nThe build hash comes from a `git rev-parse` command which has been quite\nbrittle from switching between Lute versions and how its stdio behavior\nworks between those versions\n\n# Solution\n\nI explicitly set stdio to `default` which looks to fix the issue. I've\nalso included an assert to make sure this gets caught by CI.",
          "is_bot": false,
          "headline": "Fix the build hash not being set (again) (#444)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-15T17:08:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5878f7e49bc26834ddb1e344ffeb7651ff51a866",
          "body": "Forgot to remove this when merging #435",
          "is_bot": false,
          "headline": "Remove a lingering debug print (#439)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-15T17:08:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37d769292dc634468f3b7eb025dedf5d1dbae5a9",
          "body": "# Problem\n\nStoryteller has received a bunch of updates to how it handles the\ndiscovery of Instances in the DataModel. The behavior around\nStory/Storybook modules being added/removed/changed should work a lot\nmore consistently now\n\n# Solution\n\nI went off into Storyteller for a while and fixed up a lo\n[…]\n. Like when adding/removing/changing\nStorybooks or Stories.\n\nCloses #278 \n\nAnd the primary reason I did all this was to resolve the release blocker\naround orphaned stories not showing up.\n\nCloses #434",
          "is_bot": false,
          "headline": "Upgrade Storyteller to 1.4.0 (#435)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-12T20:30:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "95b62019d378d09745482c28ba969199baa83d54",
          "body": "# Problem\n\nThis has been plaguing me for weeks now. I've had no trouble building\nFlipbook on my personal laptop, but my work one keeps hitting various\nerrors that stem from #405\n\nSee this issue for more details:\nhttps://github.com/luau-lang/lute/issues/579\n\n# Solution\n\nUpgrading Lute and switching f\n[…]\nures, and it's all working\nconsistently enough that I'm inclined to believe the issue is resolved.\nThis could still be a false positive but I'd like to move forward with\nthe change and see how it goes",
          "is_bot": false,
          "headline": "Fix builds on my work laptop (#437)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-12-12T20:13:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6dc6d490486a2eddbcd09541b380c91e0c6c32f7",
          "body": "Simply upgrading the Lute version, along with updating the batteries\ncommit to match",
          "is_bot": false,
          "headline": "Upgrade Lute to a newer nightly version (#433)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-18T18:32:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44cd8e1c6cfef3427fe2d3db71d6b52d5630519e",
          "body": "# Problem\n\nBecause I just released a minor version of Storyteller builds are now\nimplicitly pulling in that version instead of staying pinned to the\nprevious version\n\n# Solution\n\nTo address this we need to include our Wally lockfiles. This ensures\nthat any two machines will install the same set of packages",
          "is_bot": false,
          "headline": "Include lockfiles for reproducible builds (#436)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-18T18:17:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d034bb3629554f7ee58cab0e1ce7ac008e96147b",
          "body": "# Problem\n\nOur packages are behind several Roblox releases now. We're on 0.693 and\nthe latest is 0.697.\n\n# Solution\n\nI've updated the install script to pull in the latest packages from\n0.697 and fixed up the analysis errors and build errors that resulted\nfrom the change\n\nCloses #424",
          "is_bot": false,
          "headline": "Update Roblox packages to 0.697 (#429)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-11T23:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0dc71327975783cf3db9b42171e18b8dfebd2e15",
          "body": "# Problem\n\nThe `publish-nightly-plugin` job is using `ubuntu-latest` but there is a\nbug in Lute that causes process spawning to fail for that OS. (See\nhttps://github.com/luau-lang/lute/issues/440)\n\n# Solution\n\nI've switched the job over to using `macos-latest` like the other\nrelease jobs. This should hopefully fix the issue once merged",
          "is_bot": false,
          "headline": "Try to fix publishing the nightly plugin (#432)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-11T23:25:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e551fff8dd7f0019aa0845cabb77723a4f3da71",
          "body": "# Problem\n\nOur tree view in the sidebar has some issues where state updates impact\nthe entire tree, leading to some nasty bugs like pinning a storybook\nresetting the expanded state for all nodes.\n\n# Solution\n\nI'm taking a heavy-handed approach and refactoring TreeViewContext to\nuse Signals. The end-\n[…]\no in the sidebar\n- [x] Select, deselect, and reselect the same story\n- [x] Unknown stories don't open\n- [x] Last opened story does not re-open when closing and reopening the\nplugin in the same session",
          "is_bot": false,
          "headline": "Brand new tree view with Signals (#421)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-08T18:38:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9826c138091fba59c817e48af18c397f151ea51b",
          "body": "# Problem\n\nBecause the build hash isn't being set (#426) the server is failing to\ndispatch the feedback workflow. Once that PR is merged feedback posting\nshould work again, but that field (and all build fields) shouldn't block\nfeedback being posted like this\n\n# Solution\n\nThis PR updates the `feedbac\n[…]\n86b5b-a82f-403a-bc19-ab076239fa78\"\n/>\n\nThe user still can't submit feedback when empty, but now it won't appear\nlike they've done something wrong when they haven't even touched the\nfields\n\nCloses #423",
          "is_bot": false,
          "headline": "Fix feedback not getting posted (#428)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-02T23:34:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1863e994cc4a319441d8a5c05120cf9cf3ec986c",
          "body": "# Problem\n\nAfter switching to Lute the `BUILD_HASH` global stopped getting set\n\n# Solution\n\nTurns out I was supplying the wrong default for Lute's `stdio`. We're\nnow properly falling back to its default which is propagating\n`result.stdout` so we can now actually do something with the output of a\ncommand\n\nAlso threw in a bonus change to properly print out the globals being\nset. Just doing `print(env)` was spitting out the table address, not a\npretty-printed version like Lune does",
          "is_bot": false,
          "headline": "Fix BUILD_HASH not getting set (#426)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-02T23:31:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d8978920e677764f6ad2bd319d35157668b8c81",
          "body": "Now we should see in-progress deployments for the prod and nightly\nplugins on the repo homepage\n\nCloses #402",
          "is_bot": false,
          "headline": "Deployment environments (#406)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-02T23:28:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cd83177164d75e6e653ee98f5b837beea9641e6",
          "body": "# Problem\n\nI somehow forgot to include the parallelization in #400 that makes build\ntimes so much faster\n\n# Solution\n\nI've pushed up the changes I had lingering on my machine so now build\ntimes will _actually_ be ~5s instead of 10s",
          "is_bot": false,
          "headline": "Parallelize build tasks (#405)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-11-02T23:26:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c42b2d9a64abf9ea1b19ea94b642eb2c473413b",
          "body": "# Problem\n\nWe want to be able to collect feedback from folks that may not have a\nDiscord or GitHub account to get in contact through the usual channels\n\n# Solution\n\nThe solution I've put together involves a new feedback submission\ndialog. It can be accessed from Help > Send feedback\n\n<img width=\"317\n[…]\n without meaning to exit.\n\n<img width=\"508\" height=\"189\" alt=\"Screenshot 2025-10-21 at 2 45 47 PM\"\nsrc=\"https://github.com/user-attachments/assets/876fedfa-e75d-4dd6-84fc-d2f2f538b5e7\"\n/>\n\nCloses #342",
          "is_bot": false,
          "headline": "Send feedback directly from the plugin (#343)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-25T21:54:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7214004a40d6745f413548718bac0d9284289393",
          "body": "# Problem\n\nI was able to merge #399 with no issue, only to discover later that the\nplugin started crashing from a bad require path\n\n# Solution\n\nTo address this, I've added a smoketest for PluginApp to make sure it\ncan be rendered. There could still be breakages in `init.server.luau`\nthat could slip through but this should be a good first step and help\ncatch future issues\n\nCloses #404",
          "is_bot": false,
          "headline": "Add a smoketest to catch crashes (#408)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-25T01:22:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "007ecab74461035e7fca054efb251d2802ab1114",
          "body": "# Problem\n\nSeems like some mix of #403 and #401 being merged together resulted in\nthe install script failing to setup the patches to the React/Roact\nlinkers in RobloxPackages\n\n```\n  09:17:03.320  Error: attempt to index nil with 'useMemo'  -  Edit - makeConsoleImpl:62\n  09:17:03.320  PluginDebugServ\n[…]\nnce that's the\none that triggered the failure. Passes in this PR, and I mirrored it in\n#408. Passes here, fails there, so once merged we should have better\ncertainty that this issue won't happen again",
          "is_bot": false,
          "headline": "Fix patches for React (#419)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-25T01:13:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dcc577f0e4ca35c2b6742ce5f0d39405685f0de0",
          "body": "# Problem\n\n[Lute](https://github.com/luau-lang/lute) is a Luau runtime direct from\nthe Luau team and we want to start using that instead of Lune to bolster\nthe Lute ecosystem and help propel the project forward\n\n# Solution\n\nRewrote all Lune scripts for use with Lute\n\nCloses #397",
          "is_bot": false,
          "headline": "Migrate to Lute (#401)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-24T14:04:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ae2efd31cb18028ce1c966d3812ca30170c2fcc",
          "body": "# Problem\n\nIt looks like #399 resulted in the entire plugin crashing from a missing\ndependency\n\n# Solution\n\nThe issue was that ReactReconciler in RobloxPackages was looking for\nPromise which had been incorrectly pruned. To fix the issue I've\nexplicitly included Promise as one of the dependencies to act as a quick\nfix.\n\nI'm also installing LuauPolyfill from Wally so we don't need to dip into\nRobloxPackages for anything but the essentials",
          "is_bot": false,
          "headline": "Whole plugin is broken (#403)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-24T13:52:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56f03d96f8d67f060f3a850cea9681261513f0a9",
          "body": "# Problem\n\nOur builds are taking around 10s on average which is feeling quite slow\nfor the work being done\n\n# Solution\n\nWe're now running a lot of the build jobs in parallel. Speeds things up\na bunch!\n\nHere's a comparison of running `lune run build --channel dev` off `main`\nand this PR:\n\n| Run  | Be\n[…]\nter |\n| ---- | ------ | ----- |\n| 1    | 9.86   | 4.27s |\n| 2    | 10.25  | 4.28s |\n| 3    | 10.20  | 4.59s |\n| 4    | 10.42  | 5.14s |\n| 5    | 10.08  | 5.10s |\n| Avg. | 10.16s | 4.68s |\n\nCloses #398",
          "is_bot": false,
          "headline": "Improve build times (#400)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-15T17:22:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "81b8bc9471d4198cf727686807e8d2990bdeed6b",
          "body": "# Problem\n\nWe want to start collecting anonymized usage metrics to better\nunderstand things like how many daily active users the plugin has,\nsession duration, and which features are being used\n\n# Solution\n\nTo accomplish this, Flipbook now has a backend service it will send\nevents to for users that d\n[…]\nptedOut\n\nThe user is presented with a dialog upon opening the plugin that prompts\nthem to either remain opted-in or to opt-out.\n\nAfterwards events will be sent to the backend if opted-in.\n\nCloses #356",
          "is_bot": false,
          "headline": "Anonymized usage metrics (#392)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-15T16:54:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "207a999a88cd960ca77bf7624df0a4285577cc01",
          "body": "# Problem\n\nFlipbook's unzipped prod bundle size is way too big, and most of it\ncomes from RobloxPackages\n\n# Solution\n\nBumped `roblox-packages` to 0.3.0. We now only include the dependencies\nwe use. Most of the work came from\nhttps://github.com/flipbook-labs/roblox-packages/pull/7\n\nWith this change a prod build of Flipbook goes from a hefty 42 MB\nunzipped to 26 MB!!\n\nCloses #363",
          "is_bot": false,
          "headline": "Reduce bundle size (#399)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-14T17:05:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98ca1f0f4e863ae4b4b4954c10d10d84398838e5",
          "body": "# Problem\n\nWe want a right-click context menu for storybooks to allow users to\nperform some extra actions\n\n# Solution\n\nI've introduced a new right-click menu for storybooks that includes\nPin/Unpin and \"Select in Explorer\" options. The former will pin\nstorybooks to the top of the UI to make it easier\n[…]\n the user commonly uses. The latter is just a nicety to jump\nto the DataModel from Flipbook\n\nCloses #305, closes #291 \n\n\nhttps://github.com/user-attachments/assets/2843f78d-6484-4d53-893e-f79a50d11afc",
          "is_bot": false,
          "headline": "Right-click context menu for Storybooks (#370)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-13T00:01:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "27f51871022986af0334e23045123bcbc174f423",
          "body": "# Problem\n\nIn projects that have a ton of Storybooks it can be hard to keep track\nof the ones that are relevant to you\n\n# Solution\n\nAllow storybooks to be pinned to the top to make it easy to go back to\nthem later\n\nPinning will persist across Studio sessions so long as the storybooks\nremain at the same path in the DataModel\n\n> [!NOTE]\n> This PR does not include a way to actually perform a pin/unpin. That\nwill be included in #370 as one of the first context menu actions",
          "is_bot": false,
          "headline": "Pin favorite storybooks to the top (#317)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-09T19:16:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d300e9e2446e4ac1bd56aeffb512223b19c773c",
          "body": "# Problem\n\nWhen building with the `--watch` flag the build folders are actually\nbeing included in the files to watch. This results in an infinite build\nloop where after the first change, Flipbook will be built, the watcher\nwill think there's a new change, and then rebuild forever\n\n# Solution\n\nPatched this by adding some exclusion patterns. Also revised how we\ndiscover the files to watch so it should be performing less iterations\nover the filesystem\n\nCloses #387",
          "is_bot": false,
          "headline": "Fix file watcher getting stuck in a loop (#388)",
          "author_name": "Marin Minnerly",
          "author_login": "vocksel",
          "committed_at": "2025-10-09T19:13:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 13,
      "commits_last_year": 136,
      "latest_release_at": "2026-04-10T15:51:08Z",
      "latest_release_tag": "v2.5.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 35,
      "days_since_latest_release": 116,
      "mean_days_between_releases": 127.4
    },
    "artifacts": {
      "collected": true,
      "structure": [],
      "declarations": []
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "readme_badges": {
        "hosts": [
          "shields.io"
        ],
        "total": 4,
        "header": 4,
        "collected": true,
        "has_inspect_badge": false
      },
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 10,
      "stars": 123,
      "watchers": 5,
      "fork_history": {
        "days": [
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2023-02-28",
            "count": 1
          },
          {
            "date": "2023-04-01",
            "count": 1
          },
          {
            "date": "2023-06-13",
            "count": 1
          },
          {
            "date": "2023-08-11",
            "count": 1
          },
          {
            "date": "2023-12-02",
            "count": 1
          },
          {
            "date": "2024-06-23",
            "count": 1
          },
          {
            "date": "2025-12-20",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 10,
        "total_forks": 10
      },
      "star_history": null,
      "open_issues_and_prs": 88
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example",
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "docs/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 1686,
      "source_files_sampled": 5,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 12585
    },
    "dependencies": {
      "manifests": [
        "docs/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.1",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-395f-4hp3-45gv",
              "GHSA-w7jw-789q-3m8p"
            ],
            "fixed_version": "1.9.0",
            "advisory_count": 2,
            "oldest_advisory_days": 56
          },
          {
            "name": "@babel/plugin-transform-modules-systemjs",
            "direct": false,
            "version": "7.25.9",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-fv7c-fp4j-7gwp"
            ],
            "fixed_version": "8.0.0-alpha.13",
            "advisory_count": 1,
            "oldest_advisory_days": 88
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg",
              "GHSA-rgw5-rvv9-x895",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 5,
            "oldest_advisory_days": 421
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.0.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4c8g-83qw-93j6",
              "GHSA-7p8r-x3mc-p8w7",
              "GHSA-q3j6-qgpj-74h6",
              "GHSA-v2hh-gcrm-f6hx",
              "GHSA-v39h-62p7-jpjc"
            ],
            "fixed_version": "4.1.2",
            "advisory_count": 5,
            "oldest_advisory_days": 88
          },
          {
            "name": "image-size",
            "direct": false,
            "version": "1.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-m5qc-5hw7-8vg7"
            ],
            "fixed_version": "2.0.2",
            "advisory_count": 1,
            "oldest_advisory_days": 489
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 263
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 263
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc",
              "GHSA-xxjr-mmjv-4gpg"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 3,
            "oldest_advisory_days": 195
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 167
          },
          {
            "name": "node-forge",
            "direct": false,
            "version": "1.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.6,
            "advisory_ids": [
              "GHSA-2328-f5f3-gj25",
              "GHSA-554w-wpv2-vw27",
              "GHSA-5gfm-wpxj-wjgq",
              "GHSA-5m6q-g25r-mvwx",
              "GHSA-65ch-62r8-g69g",
              "GHSA-ppp5-5v6c-4jwp",
              "GHSA-q67f-28xg-22rw"
            ],
            "fixed_version": "1.4.0",
            "advisory_count": 7,
            "oldest_advisory_days": 251
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "0.1.10",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-37ch-88jc-xwx2",
              "GHSA-rhx6-c78j-4q9w"
            ],
            "fixed_version": "0.1.13",
            "advisory_count": 2,
            "oldest_advisory_days": 607
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 132
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.4.49",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-fxqj-rqcc-2cmp",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.23",
            "advisory_count": 4,
            "oldest_advisory_days": 102
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-5c6j-r48x-rmvq",
              "GHSA-qj8w-gfj5-8c6v"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 2,
            "oldest_advisory_days": 158
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "3.3.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-2p49-hgcm-8545",
              "GHSA-xpqw-6gx7-v673"
            ],
            "fixed_version": "4.0.2",
            "advisory_count": 2,
            "oldest_advisory_days": 153
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 104
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.7.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-mp7j-qc5w-4988",
              "GHSA-xv26-6w52-cph6"
            ],
            "fixed_version": "0.7.5",
            "advisory_count": 2,
            "oldest_advisory_days": 20
          },
          {
            "name": "ws",
            "direct": false,
            "version": "7.5.10",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 1,
            "oldest_advisory_days": 50
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.18.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-58qx-3vcg-4xpx",
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 2,
            "oldest_advisory_days": 78
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.26.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-968p-4wvh-cqc8"
            ],
            "fixed_version": "8.0.0-alpha.17",
            "advisory_count": 1,
            "oldest_advisory_days": 511
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.26.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-968p-4wvh-cqc8"
            ],
            "fixed_version": "8.0.0-alpha.17",
            "advisory_count": 1,
            "oldest_advisory_days": 511
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.26.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.2,
            "advisory_ids": [
              "GHSA-968p-4wvh-cqc8"
            ],
            "fixed_version": "8.0.0-alpha.17",
            "advisory_count": 1,
            "oldest_advisory_days": 511
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 174
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 174
          },
          {
            "name": "estree-util-value-to-estree",
            "direct": false,
            "version": "3.2.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.5,
            "advisory_ids": [
              "GHSA-f7f6-9jq7-3rqj"
            ],
            "fixed_version": "3.3.3",
            "advisory_count": 1,
            "oldest_advisory_days": 484
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.9",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-r4q5-vmmm-2653"
            ],
            "fixed_version": "1.16.0",
            "advisory_count": 1,
            "oldest_advisory_days": 113
          },
          {
            "name": "http-proxy-middleware",
            "direct": false,
            "version": "2.0.7",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-4www-5p9h-95mh",
              "GHSA-64mm-vxmg-q3vj",
              "GHSA-9gqv-wp59-fq42"
            ],
            "fixed_version": "4.1.0",
            "advisory_count": 3,
            "oldest_advisory_days": 477
          },
          {
            "name": "joi",
            "direct": false,
            "version": "17.13.3",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-q7cg-457f-vx79"
            ],
            "fixed_version": "18.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 54
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-4fh9-h7wg-q85m"
            ],
            "fixed_version": "13.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 246
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.7",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-mwcw-c2x4-8c55"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 1,
            "oldest_advisory_days": 604
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.29.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.9,
            "advisory_ids": [
              "GHSA-x7hr-w5r2-h6wg"
            ],
            "fixed_version": "1.30.0",
            "advisory_count": 1,
            "oldest_advisory_days": 519
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.13.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-6rw7-vpxm-498p",
              "GHSA-q8mj-m7cp-5q26",
              "GHSA-w7fw-mjwx-w883"
            ],
            "fixed_version": "6.15.2",
            "advisory_count": 3,
            "oldest_advisory_days": 217
          },
          {
            "name": "webpack-dev-server",
            "direct": false,
            "version": "4.15.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 6.5,
            "advisory_ids": [
              "GHSA-4v9v-hfq4-rm2v",
              "GHSA-79cf-xcqc-c78w",
              "GHSA-9jgg-88mc-972h",
              "GHSA-f5vj-f2hx-8m93",
              "GHSA-m28w-2pqf-7qgj",
              "GHSA-mx8g-39q3-5c79"
            ],
            "fixed_version": "5.2.6",
            "advisory_count": 6,
            "oldest_advisory_days": 426
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 1,
            "oldest_advisory_days": 132
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.26.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.2,
            "advisory_ids": [
              "GHSA-4x5r-pxfx-6jf8"
            ],
            "fixed_version": "8.0.0-rc.6",
            "advisory_count": 1,
            "oldest_advisory_days": 50
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "1.20.3",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.7,
            "advisory_ids": [
              "GHSA-v422-hmwv-36x6"
            ],
            "fixed_version": "2.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 15
          },
          {
            "name": "launch-editor",
            "direct": false,
            "version": "2.9.1",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-v6wh-96g9-6wx3"
            ],
            "fixed_version": "8.0.16",
            "advisory_count": 1,
            "oldest_advisory_days": 50
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.0.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.4,
            "advisory_ids": [
              "GHSA-76c9-3jph-rj3q"
            ],
            "fixed_version": "1.1.0",
            "advisory_count": 1,
            "oldest_advisory_days": 383
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.96.1",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.7,
            "advisory_ids": [
              "GHSA-38r7-794h-5758",
              "GHSA-8fgc-7cc6-rx7x"
            ],
            "fixed_version": "5.104.1",
            "advisory_count": 2,
            "oldest_advisory_days": 180
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 5,
          "high": 18,
          "critical": 1,
          "moderate": 15
        },
        "advisory_count": 81,
        "affected_count": 39,
        "assessed_count": 1094,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@algolia/autocomplete-core",
            "direct": false,
            "version": "1.17.7",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/autocomplete-plugin-algolia-insights",
            "direct": false,
            "version": "1.17.7",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/autocomplete-preset-algolia",
            "direct": false,
            "version": "1.17.7",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/autocomplete-shared",
            "direct": false,
            "version": "1.17.7",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/cache-browser-local-storage",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/cache-common",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/cache-in-memory",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-abtesting",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-account",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-analytics",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-analytics",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-common",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-common",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-insights",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-personalization",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-personalization",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-query-suggestions",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-search",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/client-search",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/events",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/ingestion",
            "direct": false,
            "version": "1.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/logger-common",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/logger-console",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/monitoring",
            "direct": false,
            "version": "1.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/recommend",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/recommend",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-browser-xhr",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-browser-xhr",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-common",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-fetch",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-node-http",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/requester-node-http",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "@algolia/transporter",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ampproject/remapping",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-annotate-as-pure",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-builder-binary-assignment-operator-visitor",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-create-class-features-plugin",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-create-regexp-features-plugin",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-define-polyfill-provider",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-member-expression-to-functions",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-optimise-call-expression",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-remap-async-to-generator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-replace-supers",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-simple-access",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-skip-transparent-expression-wrappers",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-wrap-function",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-bugfix-firefox-class-in-computed-class-key",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-proposal-private-property-in-object",
            "direct": false,
            "version": "7.21.0-placeholder-for-preset-env.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-dynamic-import",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-assertions",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-unicode-sets-regex",
            "direct": false,
            "version": "7.18.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-arrow-functions",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-async-generator-functions",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-async-to-generator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-block-scoped-functions",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-block-scoping",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-class-properties",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-class-static-block",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-classes",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-computed-properties",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-destructuring",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-dotall-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-duplicate-keys",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-duplicate-named-capturing-groups-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-dynamic-import",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-exponentiation-operator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-export-namespace-from",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-for-of",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-function-name",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-json-strings",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-literals",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-logical-assignment-operators",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-member-expression-literals",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-modules-amd",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-modules-commonjs",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-modules-systemjs",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-modules-umd",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-named-capturing-groups-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-new-target",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-nullish-coalescing-operator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-numeric-separator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-object-rest-spread",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-object-super",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-optional-catch-binding",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-optional-chaining",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-parameters",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-private-methods",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-private-property-in-object",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-property-literals",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-react-constant-elements",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-react-display-name",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-react-jsx",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-react-jsx-development",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-react-pure-annotations",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-regenerator",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-regexp-modifiers",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-reserved-words",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-runtime",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-shorthand-properties",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-spread",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-sticky-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-template-literals",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-typeof-symbol",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-typescript",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-unicode-escapes",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-unicode-property-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-unicode-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-transform-unicode-sets-regex",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/preset-env",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/preset-modules",
            "direct": false,
            "version": "0.1.6-no-external-plugins",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/preset-react",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/preset-typescript",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@discoveryjs/json-ext",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "@docsearch/css",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@docsearch/react",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/babel",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/bundler",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/core",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/cssnano-preset",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/logger",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/mdx-loader",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/module-type-aliases",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-content-blog",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-content-docs",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-content-pages",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-debug",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-google-analytics",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-google-gtag",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-google-tag-manager",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/plugin-sitemap",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/preset-classic",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/react-loadable",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/theme-classic",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/theme-common",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/theme-search-algolia",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/theme-translations",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/tsconfig",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/types",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/utils",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/utils-common",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@docusaurus/utils-validation",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/hoek",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@hapi/topo",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/set-array",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.25",
            "ecosystem": "npm"
          },
          {
            "name": "@leichtgewicht/ip-codec",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@mdx-js/mdx",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@mdx-js/react",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@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": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@polka/url",
            "direct": false,
            "version": "1.0.0-next.28",
            "ecosystem": "npm"
          },
          {
            "name": "@sideway/address",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@sideway/formula",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sideway/pinpoint",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.8",
            "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": "@slorber/remark-comment",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-add-jsx-attribute",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-remove-jsx-attribute",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-remove-jsx-empty-expression",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-replace-jsx-attribute-value",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-svg-dynamic-title",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-svg-em-dimensions",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-transform-react-native-svg",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-plugin-transform-svg-component",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/babel-preset",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/core",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/hast-util-to-babel-ast",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/plugin-jsx",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/plugin-svgo",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@svgr/webpack",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@szmarczak/http-timer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@trysound/sax",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/acorn",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/body-parser",
            "direct": false,
            "version": "1.19.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/bonjour",
            "direct": false,
            "version": "3.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect",
            "direct": false,
            "version": "3.4.38",
            "ecosystem": "npm"
          },
          {
            "name": "@types/connect-history-api-fallback",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/eslint-scope",
            "direct": false,
            "version": "3.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree-jsx",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-serve-static-core",
            "direct": false,
            "version": "4.19.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/express-serve-static-core",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/gtag.js",
            "direct": false,
            "version": "0.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/history",
            "direct": false,
            "version": "4.7.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/html-minifier-terser",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-cache-semantics",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-errors",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-proxy",
            "direct": false,
            "version": "1.17.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdx",
            "direct": false,
            "version": "2.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mime",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "0.7.34",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "17.0.45",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node-forge",
            "direct": false,
            "version": "1.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/prismjs",
            "direct": false,
            "version": "1.26.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/prop-types",
            "direct": false,
            "version": "15.7.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/qs",
            "direct": false,
            "version": "6.9.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/range-parser",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "18.3.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-router",
            "direct": false,
            "version": "5.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-router-config",
            "direct": false,
            "version": "5.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-router-dom",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/send",
            "direct": false,
            "version": "0.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-index",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/serve-static",
            "direct": false,
            "version": "1.15.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sockjs",
            "direct": false,
            "version": "0.3.36",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ast",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/floating-point-hex-parser",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-api-error",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-buffer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-numbers",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-bytecode",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/helper-wasm-section",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/ieee754",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/leb128",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/utf8",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-edit",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-gen",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-opt",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wasm-parser",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@webassemblyjs/wast-printer",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/ieee754",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xtuc/long",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "8.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "address",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-keywords",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "algoliasearch",
            "direct": false,
            "version": "4.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "algoliasearch",
            "direct": false,
            "version": "5.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "algoliasearch-helper",
            "direct": false,
            "version": "3.22.5",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-align",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-html-community",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "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-flatten",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "at-least-node",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.4.20",
            "ecosystem": "npm"
          },
          {
            "name": "babel-loader",
            "direct": false,
            "version": "9.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-dynamic-import-node",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-polyfill-corejs2",
            "direct": false,
            "version": "0.4.12",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-polyfill-corejs3",
            "direct": false,
            "version": "0.10.6",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-polyfill-regenerator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "batch",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "big.js",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "1.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "bonjour-service",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.24.2",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "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": "call-bind",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camel-case",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-api",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001680",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio",
            "direct": false,
            "version": "1.0.0-rc.12",
            "ecosystem": "npm"
          },
          {
            "name": "cheerio-select",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "chrome-trace-event",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-boxes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-table3",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "clone-deep",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "collapse-white-space",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colord",
            "direct": false,
            "version": "2.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "combine-promises",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-path-prefix",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "compressible",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "compression",
            "direct": false,
            "version": "1.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "config-chain",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "configstore",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "connect-history-api-fallback",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "copy-text-to-clipboard",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "copy-webpack-plugin",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-js",
            "direct": false,
            "version": "3.39.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-js-compat",
            "direct": false,
            "version": "3.39.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-js-pure",
            "direct": false,
            "version": "3.39.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "8.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-random-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-declaration-sorter",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-loader",
            "direct": false,
            "version": "6.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-minimizer-webpack-plugin",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano-preset-advanced",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano-preset-default",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano-utils",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "csso",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "debounce",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.0.2",
            "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": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "default-gateway",
            "direct": false,
            "version": "6.0.3",
            "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-lazy-prop",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "del",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "destroy",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-port",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "detect-port-alt",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dns-packet",
            "direct": false,
            "version": "5.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-converter",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dot-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.62",
            "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": "emojilib",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "emojis-list",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoticon",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "esast-util-from-estree",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "esast-util-from-js",
            "direct": false,
            "version": "2.0.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-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-attach-comments",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-build-jsx",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-is-identifier-name",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-scope",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-to-js",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-value-to-estree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-visit",
            "direct": false,
            "version": "2.0.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": "eta",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eval",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "4.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "fault",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "faye-websocket",
            "direct": false,
            "version": "0.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "feed",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-loader",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "filesize",
            "direct": false,
            "version": "8.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-cache-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.9",
            "ecosystem": "npm"
          },
          {
            "name": "fork-ts-checker-webpack-plugin",
            "direct": false,
            "version": "6.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "form-data-encoder",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "format",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "4.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-monkey",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-own-enumerable-property-symbols",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regexp",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "global-dirs",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "11.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "13.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.0.1",
            "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": "gray-matter",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "gzip-size",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "handle-thing",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-yarn",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-raw",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-estree",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-jsx-runtime",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-parse5",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "he",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "history",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "hoist-non-react-statics",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "hpack.js",
            "direct": false,
            "version": "2.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "html-entities",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "html-minifier-terser",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-minifier-terser",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-tags",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-webpack-plugin",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-deceiver",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-parser-js",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-middleware",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "http2-wrapper",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "icss-utils",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "image-size",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "immer",
            "direct": false,
            "version": "9.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "infima",
            "direct": false,
            "version": "0.2.0-alpha.45",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.3",
            "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": "inline-style-parser",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "inline-style-parser",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "invariant",
            "direct": false,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-ci",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.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-hexadecimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-installed-globally",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-npm",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-regexp",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-root",
            "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-wsl",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-yarn-global",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "1.21.6",
            "ecosystem": "npm"
          },
          {
            "name": "joi",
            "direct": false,
            "version": "17.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "latest-version",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "launch-editor",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "loader-runner",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "loader-utils",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "loader-utils",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.debounce",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniq",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "loose-envify",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lower-case",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-extensions",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-directive",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-frontmatter",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx-expression",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx-jsx",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdxjs-esm",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.0.30",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "memfs",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "methods",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-directive",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-frontmatter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-expression",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-jsx",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-md",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdxjs",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdxjs-esm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-mdx-expression",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-string",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-events-to-acorn",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.33.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.53.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.18",
            "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": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mini-css-extract-plugin",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimalistic-assert",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "multicast-dns",
            "direct": false,
            "version": "7.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "no-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "node-emoji",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "node-forge",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nprogress",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "null-loader",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "obuf",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "on-headers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "opener",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-retry",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-json",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "param-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-numeric-range",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse5-htmlparser2-tree-adapter",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "pascal-case",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-inside",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "0.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-up",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.4.49",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-calc",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-colormin",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-convert-values",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-comments",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-duplicates",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-empty",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-overridden",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-unused",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-loader",
            "direct": false,
            "version": "7.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-idents",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-longhand",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-rules",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-font-values",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-gradients",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-params",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-selectors",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-extract-imports",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-local-by-default",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-scope",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-modules-values",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-charset",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-display-values",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-positions",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-repeat-style",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-string",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-timing-functions",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-unicode",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-url",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-whitespace",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-ordered-values",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-idents",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-initial",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-transforms",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sort-media-queries",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-svgo",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-unique-selectors",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-zindex",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-error",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-time",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prism-react-renderer",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "prop-types",
            "direct": false,
            "version": "15.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "proto-list",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pupa",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "raw-loader",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-dev-utils",
            "direct": false,
            "version": "12.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-error-overlay",
            "direct": false,
            "version": "6.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "react-fast-compare",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-helmet-async",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "16.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-json-view-lite",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-loadable-ssr-addon-v5-slorber",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-router",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "react-router-config",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-router-dom",
            "direct": false,
            "version": "5.3.4",
            "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": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "reading-time",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "recma-build-jsx",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recma-jsx",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recma-parse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recma-stringify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recursive-readdir",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "regenerate",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "regenerate-unicode-properties",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "regenerator-runtime",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "regenerator-transform",
            "direct": false,
            "version": "0.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "regexpu-core",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "registry-url",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "regjsgen",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "regjsparser",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-raw",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-recma",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "relateurl",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "remark-directive",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-emoji",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-frontmatter",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-mdx",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-rehype",
            "direct": false,
            "version": "11.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "renderkid",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-like",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "requires-port",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-alpn",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pathname",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rtl-detect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "rtlcss",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.23.2",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "schema-utils",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "search-insights",
            "direct": false,
            "version": "2.17.2",
            "ecosystem": "npm"
          },
          {
            "name": "section-matter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "select-hose",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "selfsigned",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "semver-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "0.19.0",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "serve-handler",
            "direct": false,
            "version": "6.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "serve-index",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "1.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shallow-clone",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "shallowequal",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shell-quote",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "shelljs",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sirv",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "skin-tone",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "snake-case",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "sockjs",
            "direct": false,
            "version": "0.3.24",
            "ecosystem": "npm"
          },
          {
            "name": "sort-css-media-queries",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spdy",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spdy-transport",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "srcset",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "3.8.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": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-object",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom-string",
            "direct": false,
            "version": "1.0.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": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-object",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-object",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "stylehacks",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "svg-parser",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "terser-webpack-plugin",
            "direct": false,
            "version": "5.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "thunky",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-invariant",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-warning",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "totalist",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "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-is",
            "direct": false,
            "version": "1.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.19.8",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-canonical-property-names-ecmascript",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-emoji-modifier-base",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-match-property-ecmascript",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-match-property-value-ecmascript",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-property-aliases-ecmascript",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unique-string",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position-from-estree",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.1",
            "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-loader",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "utila",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "utility-types",
            "direct": false,
            "version": "3.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "utils-merge",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "value-equal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "watchpack",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "wbuf",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack",
            "direct": false,
            "version": "5.96.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-bundle-analyzer",
            "direct": false,
            "version": "4.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-dev-middleware",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-dev-server",
            "direct": false,
            "version": "4.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-merge",
            "direct": false,
            "version": "5.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-merge",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-sources",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "webpackbar",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "widest-line",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "wildcard",
            "direct": false,
            "version": "2.0.1",
            "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": "7.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "xdg-basedir",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-js",
            "direct": false,
            "version": "1.6.11",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 1094,
        "direct_count": 0,
        "indirect_count": 1094
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 24,
        "merged_prs": 303,
        "open_issues": 64,
        "closed_ratio": 0.729,
        "closed_issues": 172,
        "closed_unmerged_prs": 51
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "vocksel",
          "commits": 243,
          "avatar_url": "https://avatars.githubusercontent.com/u/3081936?v=4"
        },
        {
          "type": "User",
          "login": "passhley",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/64950564?v=4"
        },
        {
          "type": "User",
          "login": "ryanlua",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/80087248?v=4"
        },
        {
          "type": "User",
          "login": "hy2k",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/17329720?v=4"
        },
        {
          "type": "User",
          "login": "devSparkle",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/6726742?v=4"
        },
        {
          "type": "User",
          "login": "Someon1e",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/142684596?v=4"
        },
        {
          "type": "User",
          "login": "ZachCurtis",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/31259055?v=4"
        }
      ],
      "contributors_sampled": 7,
      "top_contributor_share": 0.931
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "docs.yml",
        "release.yml",
        "storybook.yml",
        "strict.yml",
        "upgrade-roblox-packages.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 4,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 8,
            "reason": "Found 24/29 approved changesets -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "16 commit(s) and 0 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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "73 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "8b74d51dae999250913b3c3646e17fa2b53fd6e5",
        "ran_at": "2026-08-05T09:24:45Z",
        "aggregate_score": 3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "recent_prs": {
        "merged_7d": 0,
        "decided_7d": 2,
        "merged_30d": 0,
        "authors_30d": 1,
        "decided_30d": 3,
        "sample_size": 60,
        "window_days": 30,
        "sample_exhausted": false,
        "authors_probed_30d": 1,
        "newcomer_merged_30d": 0,
        "bot_prs_excluded_30d": 2,
        "newcomer_authors_30d": 0,
        "newcomer_decided_30d": 0
      },
      "ci_last_run_at": "2026-07-29T21:56:40Z",
      "oldest_open_prs": [
        {
          "number": 339,
          "created_at": "2025-09-17T19:54:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 345,
          "created_at": "2025-09-23T16:50:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 422,
          "created_at": "2025-10-26T22:15:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 481,
          "created_at": "2026-01-14T02:29:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 494,
          "created_at": "2026-01-19T02:57:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 513,
          "created_at": "2026-03-01T22:23:02Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 538,
          "created_at": "2026-03-20T15:57:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 550,
          "created_at": "2026-04-03T02:46:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 564,
          "created_at": "2026-04-19T05:39:37Z",
          "last_comment_at": "2026-06-28T23:15:02Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 565,
          "created_at": "2026-04-20T23:02:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 575,
          "created_at": "2026-05-03T01:35:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 577,
          "created_at": "2026-05-04T17:08:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 587,
          "created_at": "2026-06-01T01:37:31Z",
          "last_comment_at": "2026-06-01T01:38:05Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 589,
          "created_at": "2026-06-07T02:59:12Z",
          "last_comment_at": "2026-06-19T02:48:51Z",
          "last_comment_author": "greptile-apps"
        },
        {
          "number": 595,
          "created_at": "2026-06-13T23:47:00Z",
          "last_comment_at": "2026-06-19T21:06:20Z",
          "last_comment_author": "greptile-apps"
        },
        {
          "number": 601,
          "created_at": "2026-06-19T22:13:13Z",
          "last_comment_at": "2026-06-19T22:18:33Z",
          "last_comment_author": "greptile-apps"
        },
        {
          "number": 602,
          "created_at": "2026-06-27T20:23:15Z",
          "last_comment_at": "2026-06-28T20:57:43Z",
          "last_comment_author": "vocksel"
        },
        {
          "number": 603,
          "created_at": "2026-06-28T22:06:37Z",
          "last_comment_at": "2026-06-28T22:11:30Z",
          "last_comment_author": "greptile-apps"
        },
        {
          "number": 604,
          "created_at": "2026-07-01T18:25:04Z",
          "last_comment_at": "2026-07-01T18:27:30Z",
          "last_comment_author": "greptile-apps"
        },
        {
          "number": 607,
          "created_at": "2026-07-04T00:18:33Z",
          "last_comment_at": "2026-07-04T00:20:27Z",
          "last_comment_author": "greptile-apps"
        }
      ],
      "last_merged_pr_at": "2026-07-05T18:02:36Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 44,
          "created_at": "2022-01-10T23:47:33Z",
          "last_comment_at": "2022-03-29T17:56:44Z",
          "last_comment_author": "passhley"
        },
        {
          "number": 83,
          "created_at": "2022-03-28T11:24:08Z",
          "last_comment_at": "2022-03-29T01:23:19Z",
          "last_comment_author": "passhley"
        },
        {
          "number": 84,
          "created_at": "2022-03-28T15:45:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 85,
          "created_at": "2022-03-29T01:49:44Z",
          "last_comment_at": "2022-04-02T19:40:52Z",
          "last_comment_author": "vocksel"
        },
        {
          "number": 95,
          "created_at": "2022-05-12T23:01:11Z",
          "last_comment_at": "2022-06-05T23:07:20Z",
          "last_comment_author": "vocksel"
        },
        {
          "number": 142,
          "created_at": "2022-12-24T23:42:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 159,
          "created_at": "2023-01-09T03:15:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 163,
          "created_at": "2023-01-09T03:22:12Z",
          "last_comment_at": "2023-03-12T20:30:57Z",
          "last_comment_author": "vocksel"
        },
        {
          "number": 166,
          "created_at": "2023-01-14T20:30:45Z",
          "last_comment_at": "2023-01-16T01:40:30Z",
          "last_comment_author": "passhley"
        },
        {
          "number": 178,
          "created_at": "2023-01-18T05:33:01Z",
          "last_comment_at": "2023-01-20T23:45:43Z",
          "last_comment_author": "fractalbeauty"
        },
        {
          "number": 213,
          "created_at": "2023-05-16T03:20:26Z",
          "last_comment_at": "2023-07-25T20:44:04Z",
          "last_comment_author": "passhley"
        },
        {
          "number": 223,
          "created_at": "2023-11-16T04:44:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 230,
          "created_at": "2023-11-30T20:38:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 261,
          "created_at": "2024-08-17T23:27:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 272,
          "created_at": "2024-11-10T20:28:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 273,
          "created_at": "2024-11-10T20:29:10Z",
          "last_comment_at": "2025-10-04T19:40:40Z",
          "last_comment_author": "vocksel"
        },
        {
          "number": 297,
          "created_at": "2024-12-02T17:33:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 301,
          "created_at": "2024-12-08T00:24:44Z",
          "last_comment_at": "2026-04-16T21:58:20Z",
          "last_comment_author": "ryanlua"
        },
        {
          "number": 308,
          "created_at": "2024-12-12T18:11:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 309,
          "created_at": "2024-12-12T18:15:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/flipbook-labs/flipbook",
    "host": "github.com",
    "name": "flipbook",
    "owner": "flipbook-labs"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 62,
            "calibrated": 69,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 69,
      "inputs": {
        "security": 44,
        "vitality": 80,
        "community": 51,
        "governance": 50,
        "calibration": "2026-08-02",
        "engineering": 80,
        "ai_readiness": 65,
        "weighted_overall_raw": 62
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 80,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 136,
              "human_commit_share": 0.98,
              "days_since_last_push": 5,
              "active_weeks_last_year": 35
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "35/52 weeks with commits",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 35
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "136 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 136
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "releases_count": 13,
              "latest_release_tag": "v2.5.0",
              "releases_from_tags": false,
              "days_since_latest_release": 116,
              "mean_days_between_releases": 127.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "13 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 116 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 116
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~127.4 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 127.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 30,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 30 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 51,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "weak",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "forks": 10,
              "stars": 123,
              "watchers": 5,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "123 stars",
                "points": 33.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 123
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "10 forks",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "5 watchers",
                "points": 3.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": 4,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [
                "shields.io"
              ],
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 50,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 7,
              "top_contributor_share": 0.931
            },
            "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 93% of commits",
                "points": 1.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "7 contributors",
                "points": 9.5,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 79,
            "inputs": {
              "merged_prs": 303,
              "open_issues": 64,
              "closed_issues": 172,
              "prs_merged_7d": 0,
              "prs_decided_7d": 2,
              "prs_merged_30d": 0,
              "prs_decided_30d": 3,
              "issue_closed_ratio": 0.729,
              "closed_unmerged_prs": 51,
              "first_time_authors_30d": 0,
              "first_time_prs_merged_30d": 0,
              "first_time_prs_decided_30d": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "73% of issues closed",
                "points": 30.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 73
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "303/354 decided PRs merged",
                "points": 25.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 303,
                      "decided": 354
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 24/29 approved changesets -- score normalized to 8",
                "points": 12,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "followers": 14,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "flipbook-labs",
              "public_repos": 16,
              "account_age_days": 1187
            },
            "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": "14 followers of flipbook-labs",
                "points": 8.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 14,
                      "login": "flipbook-labs"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "16 public repos, account ~3 yr old",
                "points": 15.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 16
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 80,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "roblox",
                "plugin",
                "storybook",
                "roact"
              ],
              "has_wiki": false,
              "homepage": "https://flipbook-labs.github.io/flipbook/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://flipbook-labs.github.io/flipbook/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 44,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 24/29 approved changesets -- score normalized to 8",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "73 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 1094 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 1094
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 81,
              "affected_packages": 39,
              "assessed_packages": 1094,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 1, high 18, moderate 15, low 5",
              "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": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 1094,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 7
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 65,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 12585
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "98 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 53,
            "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": false,
              "typecheck_configs": [
                "docs/tsconfig.json"
              ],
              "agent_commit_share": 0.11,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "docs/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/tsconfig.json"
                    }
                  }
                ],
                "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": "11 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 11,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Luau",
              "largest_source_bytes": 1686,
              "source_files_sampled": 5,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Luau with type-check config (docs/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "docs/tsconfig.json",
                      "language": "Luau"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/5 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 5,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example",
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example, examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example, examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "host-extension"
      ],
      "labels": [
        "plugin"
      ],
      "scores": {
        "plugin": 4
      },
      "primary": "plugin",
      "evidence": [
        {
          "tier": "description",
          "label": "plugin",
          "source": "description:plugin",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "plugin",
          "source": "tag:plugin",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "low",
      "host_extension": true,
      "runs_as_process": false,
      "consumed_by_code": false
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-08-05T09:25:07.715942Z",
  "schema_version": "0.31.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/flipbook-labs/flipbook.svg",
  "full_name": "flipbook-labs/flipbook",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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