Öffentliches Register
Software-GesundheitsberichtSchema 0.31.0 · Metriken 2.5.0 · 2026-08-05 09:25 UTC

flipbook-labs / flipbook

Storybook plugin for Roblox UI

LuauMIT★ 123 Sterne⑂ 10 Forksseit Dez. 2021Auf GitHub ansehen ↗

flipbook-labs/flipbook erreicht einen Gesundheitsindex von 69 von 100 und liegt damit im Bereich Gut. Am stärksten schneidet es bei Vitality (80/100) ab, am schwächsten bei Security (44/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

69
gesamt / 100
Gut

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

69
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Der gewichtete Gesamtwert 62 wird auf der veröffentlichten Indexskala auf 69 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

flipbook-labsOrganisation
14 Follower16 öffentliche Reposseit Mai 2023

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

80Exzellent · 21 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
24.2/36Commit-Rhythmus — 35/52 Wochen mit Commits
18/18Commit-Volumen — 136 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year136
human_commit_share0,98
days_since_last_push5
active_weeks_last_year35
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 13 Releases veröffentlicht
27/36Release-Aktualität — letztes Release vor 116 Tagen
12.6/27Release-Rhythmus — ein Release etwa alle 127,4 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count13
latest_release_tagv2.5.0
releases_from_tagsnein
days_since_latest_release116
mean_days_between_releases127,4

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

51Mittel · 17 % des Gesamtindex
Wie die Bewertung erfolgt
33.8/60Stars — 123 Stars
8/25Forks — 10 Forks
3.3/15Watcher — 5 Watcher
Verwendete Eingangsdaten
forks10
stars123
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges4
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
readme_badge_servicesshields.io
has_pull_request_templateja

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

50Mittel · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
1.6/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 93 % der Commits
9.5/13.5Breite der Beitragenden — 7 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled7
top_contributor_share0,931
Wie die Bewertung erfolgt
30.6/42Issue-Lösungsquote — 73 % der Issues geschlossen
25.7/30PR-Annahme — 303/354 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
12/15OpenSSF Scorecard: Code-Review — Found 24/29 approved changesets -- score normalized to 8
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
8.5/25Reichweite des Inhabers — 14 Follower von flipbook-labs
15.5/25Kontohistorie — 16 öffentliche Repos, Kontoalter ca. 3 Jahre
Verwendete Eingangsdaten
followers14
owner_typeOrganization
is_verified
owner_loginflipbook-labs
public_repos16
account_age_days1.187

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

80Exzellent · 19 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 6 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
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
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_confignein
has_precommit_confignein

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://flipbook-labs.github.io/flipbook/
10/10Repository-Beschreibung
10/10Topics — 4 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsroblox, plugin, storybook, roact
has_wikinein
homepagehttps://flipbook-labs.github.io/flipbook/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

44Schwach · 16 % des Gesamtindex

Sicherheitslage

30Gefährdet
Wie die Bewertung erfolgt
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.5Lizenz — 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 — keine Daten
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
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging. Die verbleibenden Gewichte wurden renormalisiert.

Abhängigkeits-Advisories

100Außergewöhnlich
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories81
affected_packages39
assessed_packages1.094
unassessed_packages0
affected_by_severitycritical 1, high 18, moderate 15, low 5
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories, Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. 1094 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

65Gut · 4 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 98 von 98 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12.585
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — docs/tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 11 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configsdocs/tsconfig.json
agent_commit_share0,11
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Luau mit Typprüfungs-Konfiguration (docs/tsconfig.json)
55/55Handhabbare Dateigrößen — 0/5 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageLuau
largest_source_bytes1.686
source_files_sampled5
oversized_source_files0
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — example, examples
Verwendete Eingangsdaten
example_dirsexample, examples
has_mcp_signalnein
api_schema_files

Eckdaten

123GitHub-Sterne
7Mitwirkende
136Commits, letzte 12 Monate
5Tage seit letztem Push
13Releases
1Bus-Faktor
64offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 10 ⇿
0Sterne
10Forks
13Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

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

Jeder Punkt umfasst 4 Tage.

OpenSSF Scorecard 3.0 / 10
3.0Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities73 existing vulnerabilities detected
Alle Abhängigkeiten 1.094

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 1.094 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

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

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 1.094 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 39 tragen bekannte Advisories, davon 0 direkte.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
shell-quote1.8.1indirektkritisch21.9.0
@babel/plugin-transform-modules-systemjs7.25.9indirekthoch18.0.0-alpha.13
brace-expansion1.1.11indirekthoch55.0.9
fast-uri3.0.3indirekthoch54.1.2
image-size1.1.1indirekthoch12.0.2
js-yaml3.14.1indirekthoch34.3.0
js-yaml4.1.0indirekthoch34.3.0
lodash4.17.21indirekthoch34.18.0
minimatch3.1.2indirekthoch310.2.3
node-forge1.3.1indirekthoch71.4.0
path-to-regexp0.1.10indirekthoch20.1.13
picomatch2.3.1indirekthoch24.0.4
postcss8.4.49indirekthoch48.5.23
serialize-javascript6.0.2indirekthoch27.0.5
svgo3.3.2indirekthoch24.0.2
uuid8.3.2indirekthoch113.0.1
websocket-driver0.7.4indirekthoch20.7.5
ws7.5.10indirekthoch18.21.0
ws8.18.0indirekthoch28.21.0
@babel/helpers7.26.0indirektmittel18.0.0-alpha.17
@babel/runtime7.26.0indirektmittel18.0.0-alpha.17
@babel/runtime-corejs37.26.0indirektmittel18.0.0-alpha.17
ajv6.12.6indirektmittel18.18.0
ajv8.17.1indirektmittel18.18.0
estree-util-value-to-estree3.2.1indirektmittel13.3.3
follow-redirects1.15.9indirektmittel11.16.0
http-proxy-middleware2.0.7indirektmittel34.1.0
joi17.13.3indirektmittel118.2.1
mdast-util-to-hast13.2.0indirektmittel113.2.1
nanoid3.3.7indirektmittel15.0.9
prismjs1.29.0indirektmittel11.30.0
qs6.13.0indirektmittel36.15.2
webpack-dev-server4.15.2indirektmittel65.2.6
yaml1.10.2indirektmittel12.8.3
@babel/core7.26.0indirektniedrig18.0.0-rc.6
body-parser1.20.3indirektniedrig12.3.0
launch-editor2.9.1indirektniedrig18.0.16
on-headers1.0.2indirektniedrig11.1.0
webpack5.96.1indirektniedrig25.104.1

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.5.0, Schema v0.31.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.