Public record
Software health reportschema 0.31.0 · metrics 2.5.0 · 2026-08-05 09:25 UTC

flipbook-labs / flipbook

Storybook plugin for Roblox UI

LuauMIT★ 123 stars⑂ 10 forkssince Dec 2021View on GitHub ↗

flipbook-labs/flipbook holds a health index of 69 out of 100, placing it in the Good band. It scores highest on Vitality (80/100) and lowest on Security (44/100). It was last updated 5 days ago. A single contributor accounts for most of its recent work.

69
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

69
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).

Ownership

flipbook-labsOrganization
14 followers16 public repossince May 2023

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

80Excellent · 21% of overall
How it's scored
36/36Push recency — last push 5 days ago
24.2/36Commit cadence — 35/52 weeks with commits
18/18Commit volume — 136 commits in the last year
10/10OpenSSF Scorecard: Maintained — 16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year136
human_commit_share0.98
days_since_last_push5
active_weeks_last_year35
How it's scored
27/27Ships releases — 13 releases published
27/36Release recency — latest release 116 days ago
12.6/27Release cadence — a release every ~127.4 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count13
latest_release_tagv2.5.0
releases_from_tagsno
days_since_latest_release116
mean_days_between_releases127.4

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

51Moderate · 17% of overall
How it's scored
33.8/60Stars — 123 stars
8/25Forks — 10 forks
3.3/15Watchers — 5 watchers
Inputs used
forks10
stars123
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
readme_badges4
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_servicesshields.io
has_pull_request_templateyes

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

50Moderate · 23% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
1.6/22.5Commit distribution — top contributor authored 93% of commits
9.5/13.5Contributor breadth — 7 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled7
top_contributor_share0.931
How it's scored
30.6/42Issue resolution — 73% of issues closed
25.7/30PR acceptance — 303/354 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
12/15OpenSSF Scorecard: Code-Review — Found 24/29 approved changesets -- score normalized to 8
Inputs used
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
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
8.5/25Owner reach — 14 followers of flipbook-labs
15.5/25Track record — 16 public repos, account ~3 yr old
Inputs used
followers14
owner_typeOrganization
is_verified
owner_loginflipbook-labs
public_repos16
account_age_days1,187

Engineering Quality

Are baseline engineering and documentation practices in place?

80Excellent · 19% of overall
How it's scored
24/24CI workflows — 6 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
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
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configno
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://flipbook-labs.github.io/flipbook/
10/10Repository description
10/10Topics — 4 topics
0/10Wiki
Inputs used
topicsroblox, plugin, storybook, roact
has_wikino
homepagehttps://flipbook-labs.github.io/flipbook/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

44Weak · 16% of overall
How it's scored
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.5License — 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 — no data
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
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3
Excluded from scoring (no data or not applicable): packaging. Remaining weights renormalized.

Dependency advisories

100Exceptional
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories81
affected_packages39
assessed_packages1,094
unassessed_packages0
affected_by_severitycritical 1, high 18, moderate 15, low 5
direct_affected_packages0
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.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

65Good · 4% of overall
How it's scored
45/45Agent instructions — AGENTS.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 98 of 98 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12,585
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
11/11Static type checking — docs/tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 11 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configsdocs/tsconfig.json
agent_commit_share0.11
toolchain_manifests
dependency_bot_commit_share0
How it's scored
27/45Type-checkable code — Luau with type-check config (docs/tsconfig.json)
55/55Manageable file sizes — 0/5 source files over 60KB
Inputs used
primary_languageLuau
largest_source_bytes1,686
source_files_sampled5
oversized_source_files0
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — example, examples
Inputs used
example_dirsexample, examples
has_mcp_signalno
api_schema_files

Key facts

123GitHub stars
7contributors
136commits, last 12 months
5days since last push
13releases
1bus factor
64open issues
npmpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 10 ⇿
0Stars
10Forks
13Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

02468101022022-062024-052026-04
Major 2Minor 10Patch 1

Each point covers 4 days.

OpenSSF Scorecard 3.0 / 10
3.0aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
n/aPackagingpackaging 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
All dependencies 1,094

Full resolved dependency set from the GitHub dependency graph: 0 direct and 1,094 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

This repository publishes no package the index resolves, so its own dependency graph was assessed — 1,094 packages, which also include development and test pins that never ship: 39 carry known advisories, of which 0 are direct.

PackageVersionRelationSeverityAdvisoriesFixed in
shell-quote1.8.1indirectcritical21.9.0
@babel/plugin-transform-modules-systemjs7.25.9indirecthigh18.0.0-alpha.13
brace-expansion1.1.11indirecthigh55.0.9
fast-uri3.0.3indirecthigh54.1.2
image-size1.1.1indirecthigh12.0.2
js-yaml3.14.1indirecthigh34.3.0
js-yaml4.1.0indirecthigh34.3.0
lodash4.17.21indirecthigh34.18.0
minimatch3.1.2indirecthigh310.2.3
node-forge1.3.1indirecthigh71.4.0
path-to-regexp0.1.10indirecthigh20.1.13
picomatch2.3.1indirecthigh24.0.4
postcss8.4.49indirecthigh48.5.23
serialize-javascript6.0.2indirecthigh27.0.5
svgo3.3.2indirecthigh24.0.2
uuid8.3.2indirecthigh113.0.1
websocket-driver0.7.4indirecthigh20.7.5
ws7.5.10indirecthigh18.21.0
ws8.18.0indirecthigh28.21.0
@babel/helpers7.26.0indirectmoderate18.0.0-alpha.17
@babel/runtime7.26.0indirectmoderate18.0.0-alpha.17
@babel/runtime-corejs37.26.0indirectmoderate18.0.0-alpha.17
ajv6.12.6indirectmoderate18.18.0
ajv8.17.1indirectmoderate18.18.0
estree-util-value-to-estree3.2.1indirectmoderate13.3.3
follow-redirects1.15.9indirectmoderate11.16.0
http-proxy-middleware2.0.7indirectmoderate34.1.0
joi17.13.3indirectmoderate118.2.1
mdast-util-to-hast13.2.0indirectmoderate113.2.1
nanoid3.3.7indirectmoderate15.0.9
prismjs1.29.0indirectmoderate11.30.0
qs6.13.0indirectmoderate36.15.2
webpack-dev-server4.15.2indirectmoderate65.2.6
yaml1.10.2indirectmoderate12.8.3
@babel/core7.26.0indirectlow18.0.0-rc.6
body-parser1.20.3indirectlow12.3.0
launch-editor2.9.1indirectlow18.0.16
on-headers1.0.2indirectlow11.1.0
webpack5.96.1indirectlow25.104.1

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v2.5.0, schema v0.31.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.