Registro público
Informe de salud del softwareesquema 0.31.0 · métricas 2.5.0 · 2026-08-05 09:25 UTC

flipbook-labs / flipbook

Storybook plugin for Roblox UI

LuauMIT★ 123 estrellas⑂ 10 forksdesde dic 2021Ver en GitHub ↗
TipoComplementocómo se determina

flipbook-labs/flipbook tiene un índice de salud de 69 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (80/100) y la más baja, Security (44/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

69
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

69
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 62 se calibra a 69 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

flipbook-labsOrganización
14 seguidores16 repositorios públicosdesde may 2023

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

80Excelente · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
24.2/36Cadencia de commits — 35/52 semanas con commits
18/18Volumen de commits — 136 commits en el último año
10/10OpenSSF Scorecard: Maintained — 16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year136
human_commit_share0,98
days_since_last_push5
active_weeks_last_year35
Cómo se puntúa
27/27Publica versiones — 13 versiones publicadas
27/36Recencia de las versiones — última versión hace 116 días
12.6/27Cadencia de publicación — una versión cada ~127,4 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count13
latest_release_tagv2.5.0
releases_from_tagsno
days_since_latest_release116
mean_days_between_releases127,4

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

51Moderado · 17% del índice global
Cómo se puntúa
33.8/60Estrellas — 123 estrellas
8/25Forks — 10 forks
3.3/15Observadores — 5 observadores
Datos de entrada utilizados
forks10
stars123
watchers5
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges4
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_servicesshields.io
has_pull_request_template

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

50Moderado · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
1.6/22.5Distribución de commits — el principal contribuyente firma el 93% de los commits
9.5/13.5Amplitud de contribuyentes — 7 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled7
top_contributor_share0,931
Cómo se puntúa
30.6/42Resolución de issues — 73% de issues cerradas
25.7/30Aceptación de PR — 303/354 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
12/15OpenSSF Scorecard: Code-Review — Found 24/29 approved changesets -- score normalized to 8
Datos de entrada utilizados
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
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
8.5/25Alcance del propietario — 14 seguidores de flipbook-labs
15.5/25Trayectoria — 16 repos públicos, cuenta de ~3 años
Datos de entrada utilizados
followers14
owner_typeOrganization
is_verified
owner_loginflipbook-labs
public_repos16
account_age_days1187

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

80Excelente · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 6 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://flipbook-labs.github.io/flipbook/
10/10Descripción del repositorio
10/10Topics — 4 topics
0/10Wiki
Datos de entrada utilizados
topicsroblox, plugin, storybook, roact
has_wikino
homepagehttps://flipbook-labs.github.io/flipbook/
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

44Débil · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3
Excluidos de la puntuación (sin datos o no aplicable): packaging. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories81
affected_packages39
assessed_packages1094
unassessed_packages0
affected_by_severitycritical 1, high 18, moderate 15, low 5
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 1094 dependencias resueltas con OSV. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

65Bueno · 4% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 98 de 98 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes12.585
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — docs/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 11 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configsdocs/tsconfig.json
agent_commit_share0,11
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
27/45Código verificable por tipos — Luau con configuración de verificación de tipos (docs/tsconfig.json)
55/55Tamaños de archivo manejables — 0/5 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageLuau
largest_source_bytes1686
source_files_sampled5
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example, examples
Datos de entrada utilizados
example_dirsexample, examples
has_mcp_signalno
api_schema_files

Datos clave

123estrellas de GitHub
7contribuidores
136commits en los últimos 12 meses
5días desde el último push
13versiones publicadas
1factor bus
64issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 10 ⇿
0Estrellas
10Forks
13Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

02468101022022-062024-052026-04
Mayor 2Menor 10Parche 1

Cada punto abarca 4 días.

OpenSSF Scorecard 3.0 / 10
3.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-08-05 09:24 UTC

10Binary-Artifactsno binaries found in the repo
4Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
8Code-ReviewFound 24/29 approved changesets -- score normalized to 8
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
0Dangerous-Workflowdangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging 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
Todas las dependencias 1094

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 0 paquetes directos y 1094 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

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

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 1094 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 39 tienen avisos conocidos, de los cuales 0 son directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
shell-quote1.8.1indirectacrítica21.9.0
@babel/plugin-transform-modules-systemjs7.25.9indirectaalta18.0.0-alpha.13
brace-expansion1.1.11indirectaalta55.0.9
fast-uri3.0.3indirectaalta54.1.2
image-size1.1.1indirectaalta12.0.2
js-yaml3.14.1indirectaalta34.3.0
js-yaml4.1.0indirectaalta34.3.0
lodash4.17.21indirectaalta34.18.0
minimatch3.1.2indirectaalta310.2.3
node-forge1.3.1indirectaalta71.4.0
path-to-regexp0.1.10indirectaalta20.1.13
picomatch2.3.1indirectaalta24.0.4
postcss8.4.49indirectaalta48.5.23
serialize-javascript6.0.2indirectaalta27.0.5
svgo3.3.2indirectaalta24.0.2
uuid8.3.2indirectaalta113.0.1
websocket-driver0.7.4indirectaalta20.7.5
ws7.5.10indirectaalta18.21.0
ws8.18.0indirectaalta28.21.0
@babel/helpers7.26.0indirectamoderada18.0.0-alpha.17
@babel/runtime7.26.0indirectamoderada18.0.0-alpha.17
@babel/runtime-corejs37.26.0indirectamoderada18.0.0-alpha.17
ajv6.12.6indirectamoderada18.18.0
ajv8.17.1indirectamoderada18.18.0
estree-util-value-to-estree3.2.1indirectamoderada13.3.3
follow-redirects1.15.9indirectamoderada11.16.0
http-proxy-middleware2.0.7indirectamoderada34.1.0
joi17.13.3indirectamoderada118.2.1
mdast-util-to-hast13.2.0indirectamoderada113.2.1
nanoid3.3.7indirectamoderada15.0.9
prismjs1.29.0indirectamoderada11.30.0
qs6.13.0indirectamoderada36.15.2
webpack-dev-server4.15.2indirectamoderada65.2.6
yaml1.10.2indirectamoderada12.8.3
@babel/core7.26.0indirectabaja18.0.0-rc.6
body-parser1.20.3indirectabaja12.3.0
launch-editor2.9.1indirectabaja18.0.16
on-headers1.0.2indirectabaja11.1.0
webpack5.96.1indirectabaja25.104.1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.5.0, esquema v0.31.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadas.