Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-23 00:35 UTC

RevenueCat / purchases-hybrid-common

Common files for the Hybrid SDKs

Kotlin · Swift · TypeScriptMIT★ 36 estrellas⑂ 25 forksdesde jul 2019Ver en GitHub ↗

RevenueCat/purchases-hybrid-common tiene un índice de salud de 77 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (100/100) y la más baja, Community & Adoption (61/100). Se actualizó por última vez hoy. 2 personas concentran la mayor parte del trabajo reciente.

77
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

77
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas 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.

Titularidad

RevenueCatOrganización
986 seguidores74 repositorios públicosdesde oct 2017

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@revenuecat/purchases-typescript-internal18.22.23.203.475267hace 5 díasrevenuecat
npm@revenuecat/purchases-js-hybrid-mappings18.22.22.855.738150hace 5 días

Métricas por categoría

Vitalidad

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

100Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
36/36Cadencia de commits — 52/52 semanas con commits
18/18Volumen de commits — 404 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year404
human_commit_share0,8
days_since_last_push0
active_weeks_last_year52
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~2 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tag18.22.2
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases2
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

61Moderado · 18% del índice global
Cómo se puntúa
25/60Estrellas — 36 estrellas
11.5/25Forks — 25 forks
4.7/15Observadores — 8 observadores
Datos de entrada utilizados
forks25
stars36
watchers8
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
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
80/80Descargas mensuales — 6.059.213 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@revenuecat/purchases-typescript-internal, @revenuecat/purchases-js-hybrid-mappings
dependents
ecosystemsnpm
total_downloads
monthly_downloads6.059.213
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

80Bueno · 24% del índice global
Cómo se puntúa
25.2/54Factor bus — la mitad de los commits recae en 2 contribuyente(s)
11.4/22.5Distribución de commits — el principal contribuyente firma el 50% de los commits
13.5/13.5Amplitud de contribuyentes — 22 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 13 contributing companies or organizations
Datos de entrada utilizados
bus_factor2
contributors_sampled22
top_contributor_share0,495
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
29.4/38.3Aceptación de PR — 1333/1732 PR decididos fusionados
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
merged_prs1333
open_issues0
closed_issues16
issue_closed_ratio1
closed_unmerged_prs399
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
21.5/25Alcance del propietario — 986 seguidores de RevenueCat
25/25Trayectoria — 74 repos públicos, cuenta de ~8 años
Datos de entrada utilizados
followers986
owner_typeOrganization
is_verified
owner_loginRevenueCat
public_repos74
account_age_days3194
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 267 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@revenuecat/purchases-typescript-internal, @revenuecat/purchases-js-hybrid-mappings
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

66Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .eslintrc.cjs
0/9.6Hooks de pre-commit
0/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_editorconfigno
has_linter_config
has_precommit_configno

Documentación

40En riesgo
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dirno
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?

75Bueno · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
3.8/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
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 13 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
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 — sin datos
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3/7.5Vulnerabilities — 6 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate6,9
Excluidos de la puntuación (sin datos o no aplicable): packaging, pinned_dependencies, signed_releases. 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
advisories8
affected_packages6
assessed_packages654
unassessed_packages0
affected_by_severityhigh 6
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 654 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? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

95Excelente · 0% 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 — 80 de 80 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_bytes8205
Cómo se puntúa
18/18Arranque con un solo comando — mise.toml
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.cjs
11/11Verificación estática de tipos — purchases-js-hybrid-mappings/tsconfig.json, typescript/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
8/8Mantenimiento automatizado — 20 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfilesGemfile.lock, yarn.lock
has_dockerfileno
typed_language
bootstrap_filesmise.toml
has_devcontainerno
has_linter_config
typecheck_configspurchases-js-hybrid-mappings/tsconfig.json, typescript/tsconfig.json
agent_commit_share0,11
toolchain_manifestsandroid/api-tests/build.gradle.kts, android/build.gradle.kts, android/hybridcommon-store-galaxy/build.gradle.kts, android/hybridcommon-ui/build.gradle.kts, android/hybridcommon/build.gradle.kts
dependency_bot_commit_share0,2
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
45/45Código verificable por tipos — Kotlin (tipado estático)
54.1/55Tamaños de archivo manejables — 3/181 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageKotlin
largest_source_bytes90.397
source_files_sampled181
oversized_source_files3

Datos clave

36estrellas de GitHub
22contribuidores
404commits en los últimos 12 meses
0días desde el último push
100versiones publicadas
2factor bus
0issues abiertas
Maven, npm, RubyGemsecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • deps.dev does not index npm:@revenuecat/purchases-typescript-internal@18.22.2; advisories assessed against the repository dependency graph instead

Más detalle

Historial de estrellas y forks 0 ★ / 25 ⇿
0Estrellas
25Forks
93Versiones

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.

05101520252512020-052023-062026-07
Mayor 1Menor 66Parche 25

Cada punto abarca 6 días.

OpenSSF Scorecard 6.9 / 10
6.9agregado

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-07-23 00:34 UTC

9Binary-Artifactsbinaries present in source code
5Branch-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
10Code-Reviewall changesets reviewed
10Contributorsproject has 13 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
4Vulnerabilities6 existing vulnerabilities detected
Dependencias directas 7
RegistroPaqueteRestricción de versiónManifiesto
RubyGemsfastlaneGemfile
RubyGemscocoapods~> 1.17Gemfile
RubyGemsdangerGemfile
RubyGemsrest-clientGemfile
RubyGemslefthook~> 2.1Gemfile
RubyGemsabbrevGemfile
npm@revenuecat/purchases-js1.47.2purchases-js-hybrid-mappings/package.json
Todas las dependencias 654

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

RegistroPaqueteVersiónRelación
npm@revenuecat/purchases-js1.47.2directa
RubyGemsabbrev0.1.2directa
RubyGemscocoapods1.17.0directa
RubyGemsdanger9.6.0directa
RubyGemsfastlane2.237.0directa
RubyGemslefthook2.1.10directa
RubyGemsrest-client2.1.0directa
npm@asamuzakjp/css-color3.2.0indirecta
npm@babel/code-frame7.29.7indirecta
npm@babel/compat-data7.29.7indirecta
npm@babel/core7.29.7indirecta
npm@babel/generator7.29.7indirecta
npm@babel/helper-compilation-targets7.29.7indirecta
npm@babel/helper-globals7.29.7indirecta
npm@babel/helper-module-imports7.29.7indirecta
npm@babel/helper-module-transforms7.29.7indirecta
npm@babel/helper-plugin-utils7.29.7indirecta
npm@babel/helper-string-parser7.29.7indirecta
npm@babel/helper-validator-identifier7.29.7indirecta
npm@babel/helper-validator-option7.29.7indirecta
npm@babel/helpers7.29.7indirecta
npm@babel/parser7.29.7indirecta
npm@babel/plugin-syntax-async-generators7.8.4indirecta
npm@babel/plugin-syntax-bigint7.8.3indirecta
npm@babel/plugin-syntax-class-properties7.12.13indirecta
npm@babel/plugin-syntax-class-static-block7.14.5indirecta
npm@babel/plugin-syntax-import-attributes7.29.7indirecta
npm@babel/plugin-syntax-import-meta7.10.4indirecta
npm@babel/plugin-syntax-json-strings7.8.3indirecta
npm@babel/plugin-syntax-jsx7.29.7indirecta
npm@babel/plugin-syntax-logical-assignment-operators7.10.4indirecta
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3indirecta
npm@babel/plugin-syntax-numeric-separator7.10.4indirecta
npm@babel/plugin-syntax-object-rest-spread7.8.3indirecta
npm@babel/plugin-syntax-optional-catch-binding7.8.3indirecta
npm@babel/plugin-syntax-optional-chaining7.8.3indirecta
npm@babel/plugin-syntax-private-property-in-object7.14.5indirecta
npm@babel/plugin-syntax-top-level-await7.14.5indirecta
npm@babel/plugin-syntax-typescript7.29.7indirecta
npm@babel/template7.29.7indirecta
npm@babel/traverse7.29.7indirecta
npm@babel/types7.29.7indirecta
npm@bcoe/v8-coverage0.2.3indirecta
npm@csstools/color-helpers5.1.0indirecta
npm@csstools/css-calc2.1.4indirecta
npm@csstools/css-color-parser3.1.0indirecta
npm@csstools/css-parser-algorithms3.0.5indirecta
npm@csstools/css-tokenizer3.0.4indirecta
npm@eslint-community/eslint-utils4.9.1indirecta
npm@eslint-community/regexpp4.12.2indirecta
npm@eslint/eslintrc2.1.4indirecta
npm@eslint/js8.57.1indirecta
npm@humanwhocodes/config-array0.13.0indirecta
npm@humanwhocodes/module-importer1.0.1indirecta
npm@humanwhocodes/object-schema2.0.3indirecta
npm@istanbuljs/load-nyc-config1.1.0indirecta
npm@istanbuljs/schema0.1.6indirecta
npm@jest/console29.7.0indirecta
npm@jest/core29.7.0indirecta
npm@jest/environment29.7.0indirecta
npm@jest/environment30.4.1indirecta
npm@jest/environment-jsdom-abstract30.4.1indirecta
npm@jest/expect29.7.0indirecta
npm@jest/expect-utils29.7.0indirecta
npm@jest/fake-timers29.7.0indirecta
npm@jest/fake-timers30.4.1indirecta
npm@jest/globals29.7.0indirecta
npm@jest/pattern30.4.0indirecta
npm@jest/reporters29.7.0indirecta
npm@jest/schemas29.6.3indirecta
npm@jest/schemas30.4.1indirecta
npm@jest/source-map29.6.3indirecta
npm@jest/test-result29.7.0indirecta
npm@jest/test-sequencer29.7.0indirecta
npm@jest/transform29.7.0indirecta
npm@jest/types29.6.3indirecta
npm@jest/types30.4.1indirecta
npm@jridgewell/gen-mapping0.3.13indirecta
npm@jridgewell/remapping2.3.5indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/source-map0.3.11indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@microsoft/api-extractor7.58.9indirecta
npm@microsoft/api-extractor-model7.33.8indirecta
npm@microsoft/tsdoc0.16.0indirecta
npm@microsoft/tsdoc-config0.18.1indirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@rollup/plugin-node-resolve15.3.1indirecta
npm@rollup/plugin-terser0.4.4indirecta
npm@rollup/plugin-typescript11.1.6indirecta
npm@rollup/pluginutils5.4.0indirecta
npm@rollup/rollup-android-arm-eabi4.62.2indirecta
npm@rollup/rollup-android-arm644.62.2indirecta
npm@rollup/rollup-darwin-arm644.62.2indirecta
npm@rollup/rollup-darwin-x644.62.2indirecta
npm@rollup/rollup-freebsd-arm644.62.2indirecta
npm@rollup/rollup-freebsd-x644.62.2indirecta
npm@rollup/rollup-linux-arm-gnueabihf4.62.2indirecta
npm@rollup/rollup-linux-arm-musleabihf4.62.2indirecta
npm@rollup/rollup-linux-arm64-gnu4.62.2indirecta
npm@rollup/rollup-linux-arm64-musl4.62.2indirecta
npm@rollup/rollup-linux-loong64-gnu4.62.2indirecta
npm@rollup/rollup-linux-loong64-musl4.62.2indirecta
npm@rollup/rollup-linux-ppc64-gnu4.62.2indirecta
npm@rollup/rollup-linux-ppc64-musl4.62.2indirecta
npm@rollup/rollup-linux-riscv64-gnu4.62.2indirecta
npm@rollup/rollup-linux-riscv64-musl4.62.2indirecta
npm@rollup/rollup-linux-s390x-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-musl4.62.2indirecta
npm@rollup/rollup-openbsd-x644.62.2indirecta
npm@rollup/rollup-openharmony-arm644.62.2indirecta
npm@rollup/rollup-win32-arm64-msvc4.62.2indirecta
npm@rollup/rollup-win32-ia32-msvc4.62.2indirecta
npm@rollup/rollup-win32-x64-gnu4.62.2indirecta
npm@rollup/rollup-win32-x64-msvc4.62.2indirecta
npm@rushstack/node-core-library5.23.1indirecta
npm@rushstack/problem-matcher0.2.1indirecta
npm@rushstack/rig-package0.7.3indirecta
npm@rushstack/terminal0.24.0indirecta
npm@rushstack/ts-command-line5.3.10indirecta
npm@sinclair/typebox0.27.10indirecta
npm@sinclair/typebox0.34.49indirecta
npm@sinonjs/commons3.0.1indirecta
npm@sinonjs/fake-timers10.3.0indirecta
npm@sinonjs/fake-timers15.4.0indirecta
npm@types/argparse1.0.38indirecta
npm@types/babel__core7.20.5indirecta
npm@types/babel__generator7.27.0indirecta
npm@types/babel__template7.4.4indirecta
npm@types/babel__traverse7.28.0indirecta
npm@types/estree1.0.9indirecta
npm@types/graceful-fs4.1.9indirecta
npm@types/istanbul-lib-coverage2.0.6indirecta
npm@types/istanbul-lib-report3.0.3indirecta
npm@types/istanbul-reports3.0.4indirecta
npm@types/jest29.5.14indirecta
npm@types/jsdom21.1.7indirecta
npm@types/json-schema7.0.15indirecta
npm@types/node26.0.1indirecta
npm@types/resolve1.20.2indirecta
npm@types/semver7.7.1indirecta
npm@types/stack-utils2.0.3indirecta
npm@types/tough-cookie4.0.5indirecta
npm@types/yargs17.0.35indirecta
npm@types/yargs-parser21.0.3indirecta
npm@typescript-eslint/eslint-plugin5.62.0indirecta
npm@typescript-eslint/eslint-plugin7.18.0indirecta
npm@typescript-eslint/parser5.62.0indirecta
npm@typescript-eslint/parser7.18.0indirecta
npm@typescript-eslint/scope-manager5.62.0indirecta
npm@typescript-eslint/scope-manager7.18.0indirecta
npm@typescript-eslint/type-utils5.62.0indirecta
npm@typescript-eslint/type-utils7.18.0indirecta
npm@typescript-eslint/types5.62.0indirecta
npm@typescript-eslint/types7.18.0indirecta
npm@typescript-eslint/typescript-estree5.62.0indirecta
npm@typescript-eslint/typescript-estree7.18.0indirecta
npm@typescript-eslint/utils5.62.0indirecta
npm@typescript-eslint/utils7.18.0indirecta
npm@typescript-eslint/visitor-keys5.62.0indirecta
npm@typescript-eslint/visitor-keys7.18.0indirecta
npm@ungap/structured-clone1.3.1indirecta
npm@ungap/structured-clone1.3.2indirecta
npmacorn8.17.0indirecta
npmacorn-jsx5.3.2indirecta
npmagent-base7.1.4indirecta
npmajv6.15.0indirecta
npmajv8.18.0indirecta
npmajv8.20.0indirecta
npmajv-draft-041.0.0indirecta
npmajv-formats3.0.1indirecta
npmansi-escapes4.3.2indirecta
npmansi-regex5.0.1indirecta
npmansi-styles4.3.0indirecta
npmansi-styles5.2.0indirecta
npmanymatch3.1.3indirecta
npmargparse1.0.10indirecta
npmargparse2.0.1indirecta
npmarray-union2.1.0indirecta
npmbabel-jest29.7.0indirecta
npmbabel-plugin-istanbul6.1.1indirecta
npmbabel-plugin-jest-hoist29.6.3indirecta
npmbabel-preset-current-node-syntax1.2.0indirecta
npmbabel-preset-jest29.6.3indirecta
npmbalanced-match1.0.2indirecta
npmbalanced-match4.0.4indirecta
npmbaseline-browser-mapping2.10.40indirecta
npmbrace-expansion1.1.15indirecta
npmbrace-expansion2.1.1indirecta
npmbrace-expansion5.0.6indirecta
npmbrace-expansion5.0.7indirecta
npmbraces3.0.3indirecta
npmbrowserslist4.28.4indirecta
npmbs-logger0.2.6indirecta
npmbser2.1.1indirecta
npmbuffer-from1.1.2indirecta
npmcallsites3.1.0indirecta
npmcamelcase5.3.1indirecta
npmcamelcase6.3.0indirecta
npmcaniuse-lite1.0.30001799indirecta
npmchalk4.1.2indirecta
npmchar-regex1.0.2indirecta
npmci-info3.9.0indirecta
npmci-info4.4.0indirecta
npmcjs-module-lexer1.4.3indirecta
npmcliui8.0.1indirecta
npmco4.6.0indirecta
npmcollect-v8-coverage1.0.3indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcommander2.20.3indirecta
npmconcat-map0.0.1indirecta
npmconvert-source-map2.0.0indirecta
npmcreate-jest29.7.0indirecta
npmcross-spawn7.0.6indirecta
npmcssstyle4.6.0indirecta
npmdata-urls5.0.0indirecta
npmdebug4.4.3indirecta
npmdecimal.js10.6.0indirecta
npmdedent1.7.2indirecta
npmdeep-is0.1.4indirecta
npmdeepmerge4.3.1indirecta
npmdetect-newline3.1.0indirecta
npmdiff8.0.4indirecta
npmdiff-sequences29.6.3indirecta
npmdir-glob3.0.1indirecta
npmdoctrine3.0.0indirecta
npmelectron-to-chromium1.5.380indirecta
npmemittery0.13.1indirecta
npmemoji-regex8.0.0indirecta
npmentities6.0.1indirecta
npmerror-ex1.3.4indirecta
npmes-errors1.3.0indirecta
npmescalade3.2.0indirecta
npmescape-string-regexp2.0.0indirecta
npmescape-string-regexp4.0.0indirecta
npmeslint8.57.1indirecta
npmeslint-scope5.1.1indirecta
npmeslint-scope7.2.2indirecta
npmeslint-visitor-keys3.4.3indirecta
npmespree9.6.1indirecta
npmesprima4.0.1indirecta
npmesquery1.7.0indirecta
npmesrecurse4.3.0indirecta
npmestraverse4.3.0indirecta
npmestraverse5.3.0indirecta
npmestree-walker2.0.2indirecta
npmesutils2.0.3indirecta
npmexeca5.1.1indirecta
npmexit0.1.2indirecta
npmexpect29.7.0indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.3.3indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein2.0.6indirecta
npmfast-uri3.1.2indirecta
npmfastq1.20.1indirecta
npmfb-watchman2.0.2indirecta
npmfile-entry-cache6.0.1indirecta
npmfill-range7.1.1indirecta
npmfind-up4.1.0indirecta
npmfind-up5.0.0indirecta
npmflat-cache3.2.0indirecta
npmflatted3.4.2indirecta
npmfs-extra11.3.5indirecta
npmfs.realpath1.0.0indirecta
npmfsevents2.3.3indirecta
npmfunction-bind1.1.2indirecta
npmgensync1.0.0-beta.2indirecta
npmget-caller-file2.0.5indirecta
npmget-package-type0.1.0indirecta
npmget-stream6.0.1indirecta
npmglob7.2.3indirecta
npmglob-parent5.1.2indirecta
npmglob-parent6.0.2indirecta
npmglobals13.24.0indirecta
npmglobby11.1.0indirecta
npmgraceful-fs4.2.11indirecta
npmgraphemer1.4.0indirecta
npmhandlebars4.7.9indirecta
npmhas-flag4.0.0indirecta
npmhasown2.0.4indirecta
npmhtml-encoding-sniffer4.0.0indirecta
npmhtml-escaper2.0.2indirecta
npmhttp-proxy-agent7.0.2indirecta
npmhttps-proxy-agent7.0.6indirecta
npmhuman-signals2.1.0indirecta
npmiconv-lite0.6.3indirecta
npmignore5.3.2indirecta
npmimport-fresh3.3.1indirecta
npmimport-lazy4.0.0indirecta
npmimport-local3.2.0indirecta
npmimurmurhash0.1.4indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmis-arrayish0.2.1indirecta
npmis-core-module2.16.2indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-generator-fn2.1.0indirecta
npmis-glob4.0.3indirecta
npmis-module1.0.0indirecta
npmis-number7.0.0indirecta
npmis-path-inside3.0.3indirecta
npmis-potential-custom-element-name1.0.1indirecta
npmis-stream2.0.1indirecta
npmisexe2.0.0indirecta
npmistanbul-lib-coverage3.2.2indirecta
npmistanbul-lib-instrument5.2.1indirecta
npmistanbul-lib-instrument6.0.3indirecta
npmistanbul-lib-report3.0.1indirecta
npmistanbul-lib-source-maps4.0.1indirecta
npmistanbul-reports3.2.0indirecta
npmjest29.7.0indirecta
npmjest-changed-files29.7.0indirecta
npmjest-circus29.7.0indirecta
npmjest-cli29.7.0indirecta
npmjest-config29.7.0indirecta
npmjest-diff29.7.0indirecta
npmjest-docblock29.7.0indirecta
npmjest-each29.7.0indirecta
npmjest-environment-jsdom30.4.1indirecta
npmjest-environment-node29.7.0indirecta
npmjest-get-type29.6.3indirecta
npmjest-haste-map29.7.0indirecta
npmjest-leak-detector29.7.0indirecta
npmjest-matcher-utils29.7.0indirecta
npmjest-message-util29.7.0indirecta
npmjest-message-util30.4.1indirecta
npmjest-mock29.7.0indirecta
npmjest-mock30.4.1indirecta
npmjest-pnp-resolver1.2.3indirecta
npmjest-regex-util29.6.3indirecta
npmjest-regex-util30.4.0indirecta
npmjest-resolve29.7.0indirecta
npmjest-resolve-dependencies29.7.0indirecta
npmjest-runner29.7.0indirecta
npmjest-runtime29.7.0indirecta
npmjest-snapshot29.7.0indirecta
npmjest-util29.7.0indirecta
npmjest-util30.4.1indirecta
npmjest-validate29.7.0indirecta
npmjest-watcher29.7.0indirecta
npmjest-worker29.7.0indirecta
npmjju1.4.0indirecta
npmjs-tokens4.0.0indirecta
npmjs-yaml3.15.0indirecta
npmjs-yaml4.2.0indirecta
npmjs-yaml4.3.0indirecta
npmjsdom26.1.0indirecta
npmjsesc3.1.0indirecta
npmjson-buffer3.0.1indirecta
npmjson-parse-even-better-errors2.3.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-schema-traverse1.0.0indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmjson52.2.3indirecta
npmjsonfile6.2.1indirecta
npmkeyv4.5.4indirecta
npmkleur3.0.3indirecta
npmleven3.1.0indirecta
npmlevn0.4.1indirecta
npmlines-and-columns1.2.4indirecta
npmlocate-path5.0.0indirecta
npmlocate-path6.0.0indirecta
npmlodash.memoize4.1.2indirecta
npmlodash.merge4.6.2indirecta
npmlru-cache10.4.3indirecta
npmlru-cache5.1.1indirecta
npmmagic-string0.30.21indirecta
npmmake-dir4.0.0indirecta
npmmake-error1.3.6indirecta
npmmakeerror1.0.12indirecta
npmmerge-stream2.0.0indirecta
npmmerge21.4.1indirecta
npmmicromatch4.0.8indirecta
npmmimic-fn2.1.0indirecta
npmminimatch10.2.3indirecta
npmminimatch3.1.5indirecta
npmminimatch9.0.9indirecta
npmminimist1.2.8indirecta
npmms2.1.3indirecta
npmnatural-compare1.4.0indirecta
npmnatural-compare-lite1.4.0indirecta
npmneo-async2.6.2indirecta
npmnode-int640.4.0indirecta
npmnode-releases2.0.50indirecta
npmnormalize-path3.0.0indirecta
npmnpm-run-path4.0.1indirecta
npmnwsapi2.2.24indirecta
npmonce1.4.0indirecta
npmonetime5.1.2indirecta
npmoptionator0.9.4indirecta
npmp-limit2.3.0indirecta
npmp-limit3.1.0indirecta
npmp-locate4.1.0indirecta
npmp-locate5.0.0indirecta
npmp-try2.2.0indirecta
npmparent-module1.0.1indirecta
npmparse-json5.2.0indirecta
npmparse57.3.0indirecta
npmpath-exists4.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpath-parse1.0.7indirecta
npmpath-type4.0.0indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.2indirecta
npmpicomatch4.0.4indirecta
npmpirates4.0.7indirecta
npmpkg-dir4.2.0indirecta
npmprelude-ls1.2.1indirecta
npmprettier3.9.1indirecta
npmpretty-format29.7.0indirecta
npmpretty-format30.4.1indirecta
npmprompts2.4.2indirecta
npmpunycode2.3.1indirecta
npmpure-rand6.1.0indirecta
npmqueue-microtask1.2.3indirecta
npmrandombytes2.1.0indirecta
npmreact-is18.3.1indirecta
npmreact-is-1818.3.1indirecta
npmreact-is-1919.2.7indirecta
npmrequire-directory2.1.1indirecta
npmrequire-from-string2.0.2indirecta
npmresolve1.22.12indirecta
npmresolve-cwd3.0.0indirecta
npmresolve-from4.0.0indirecta
npmresolve-from5.0.0indirecta
npmresolve.exports2.0.3indirecta
npmreusify1.1.0indirecta
npmrimraf3.0.2indirecta
npmrollup4.62.2indirecta
npmrollup-plugin-dts6.4.1indirecta
npmrrweb-cssom0.8.0indirecta
npmrun-parallel1.2.0indirecta
npmsafe-buffer5.2.1indirecta
npmsafer-buffer2.1.2indirecta
npmsaxes6.0.0indirecta
npmsemver6.3.1indirecta
npmsemver7.7.4indirecta
npmsemver7.8.5indirecta
npmserialize-javascript6.0.2indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsignal-exit3.0.7indirecta
npmsisteransi1.0.5indirecta
npmslash3.0.0indirecta
npmsmob1.6.2indirecta
npmsource-map0.6.1indirecta
npmsource-map-support0.5.13indirecta
npmsource-map-support0.5.21indirecta
npmsprintf-js1.0.3indirecta
npmstack-utils2.0.6indirecta
npmstring-argv0.3.2indirecta
npmstring-length4.0.2indirecta
npmstring-width4.2.3indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-bom4.0.0indirecta
npmstrip-final-newline2.0.0indirecta
npmstrip-json-comments3.1.1indirecta
npmsupports-color7.2.0indirecta
npmsupports-color8.1.1indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmsymbol-tree3.2.4indirecta
npmterser5.48.0indirecta
npmtest-exclude6.0.0indirecta
npmtext-table0.2.0indirecta
npmtldts6.1.86indirecta
npmtldts-core6.1.86indirecta
npmtmpl1.0.5indirecta
npmto-regex-range5.0.1indirecta
npmtough-cookie5.1.2indirecta
npmtr465.1.1indirecta
npmts-api-utils1.4.3indirecta
npmts-jest29.4.11indirecta
npmtslib1.14.1indirecta
npmtslib2.8.1indirecta
npmtsutils3.21.0indirecta
npmtype-check0.4.0indirecta
npmtype-detect4.0.8indirecta
npmtype-fest0.20.2indirecta
npmtype-fest0.21.3indirecta
npmtype-fest4.41.0indirecta
npmtypescript5.3.3indirecta
npmtypescript5.9.3indirecta
npmuglify-js3.19.3indirecta
npmundici-types8.3.0indirecta
npmuniversalify2.0.1indirecta
npmupdate-browserslist-db1.2.3indirecta
npmuri-js4.4.1indirecta
npmv8-to-istanbul9.3.0indirecta
npmw3c-xmlserializer5.0.0indirecta
npmwalker1.0.8indirecta
npmwebidl-conversions7.0.0indirecta
npmwhatwg-encoding3.1.1indirecta
npmwhatwg-mimetype4.0.0indirecta
npmwhatwg-url14.2.0indirecta
npmwhich2.0.2indirecta
npmword-wrap1.2.5indirecta
npmwordwrap1.0.0indirecta
npmwrap-ansi7.0.0indirecta
npmwrappy1.0.2indirecta
npmwrite-file-atomic4.0.2indirecta
npmws8.21.0indirecta
npmxml-name-validator5.0.0indirecta
npmxmlchars2.2.0indirecta
npmy18n5.0.8indirecta
npmyallist3.1.1indirecta
npmyargs17.7.3indirecta
npmyargs-parser21.1.1indirecta
npmyocto-queue0.1.0indirecta
RubyGemsactivesupport7.2.3.1indirecta
RubyGemsaddressable2.9.0indirecta
RubyGemsalgoliasearch1.27.5indirecta
RubyGemsartifactory3.0.17indirecta
RubyGemsatomos0.1.3indirecta
RubyGemsaws-eventstream1.4.0indirecta
RubyGemsaws-partitions1.1267.0indirecta
RubyGemsaws-sdk-core3.253.0indirecta
RubyGemsaws-sdk-kms1.129.0indirecta
RubyGemsaws-sdk-s31.226.0indirecta
RubyGemsaws-sigv41.12.1indirecta
RubyGemsbabosa1.0.4indirecta
RubyGemsbase640.3.0indirecta
RubyGemsbenchmark0.5.0indirecta
RubyGemsbigdecimal4.1.2indirecta
RubyGemsCFPropertyList3.0.8indirecta
RubyGemsclaide1.1.0indirecta
RubyGemsclaide-plugins0.9.2indirecta
RubyGemscocoapods-core1.17.0indirecta
RubyGemscocoapods-deintegrate1.0.5indirecta
RubyGemscocoapods-downloader2.1indirecta
RubyGemscocoapods-plugins1.0.0indirecta
RubyGemscocoapods-search1.0.1indirecta
RubyGemscocoapods-trunk1.6.0indirecta
RubyGemscocoapods-try1.2.0indirecta
RubyGemscolored1.2indirecta
RubyGemscolored23.1.2indirecta
RubyGemscommander4.6.0indirecta
RubyGemsconcurrent-ruby1.3.7indirecta
RubyGemsconnection_pool3.0.2indirecta
RubyGemscork0.3.0indirecta
RubyGemscsv3.3.5indirecta
RubyGemsdeclarative0.0.20indirecta
RubyGemsdigest-crc0.7.0indirecta
RubyGemsdomain_name0.6.20240107indirecta
RubyGemsdotenv2.8.1indirecta
RubyGemsdrb2.2.3indirecta
RubyGemsemoji_regex3.2.3indirecta
RubyGemsethon0.18.0indirecta
RubyGemsexcon1.5.0indirecta
RubyGemsfaraday1.10.6indirecta
RubyGemsfaraday-cookie_jar0.0.8indirecta
RubyGemsfaraday-em_http1.0.0indirecta
RubyGemsfaraday-em_synchrony1.0.1indirecta
RubyGemsfaraday-excon1.1.0indirecta
RubyGemsfaraday-http-cache2.7.0indirecta
RubyGemsfaraday-httpclient1.0.1indirecta
RubyGemsfaraday-multipart1.2.0indirecta
RubyGemsfaraday-net_http1.0.2indirecta
RubyGemsfaraday-net_http_persistent1.2.0indirecta
RubyGemsfaraday-patron1.0.0indirecta
RubyGemsfaraday-rack1.0.0indirecta
RubyGemsfaraday-retry1.0.4indirecta
RubyGemsfaraday_middleware1.2.1indirecta
RubyGemsfastimage2.4.1indirecta
RubyGemsfastlane-plugin-versioning_android0.1.1indirecta
RubyGemsfastlane-sirp1.1.0indirecta
RubyGemsffi1.17.4indirecta
RubyGemsfourflusher2.3.1indirecta
RubyGemsfuzzy_match2.0.4indirecta
RubyGemsgh_inspector1.1.3indirecta
RubyGemsgit4.3.2indirecta
RubyGemsgoogle-apis-androidpublisher_v30.104.0indirecta
RubyGemsgoogle-apis-core0.18.0indirecta
RubyGemsgoogle-apis-iamcredentials_v10.28.0indirecta
RubyGemsgoogle-apis-playcustomapp_v10.18.0indirecta
RubyGemsgoogle-apis-storage_v10.64.0indirecta
RubyGemsgoogle-cloud-core1.9.0indirecta
RubyGemsgoogle-cloud-env2.2.2indirecta
RubyGemsgoogle-cloud-errors1.6.0indirecta
RubyGemsgoogle-cloud-storage1.62.0indirecta
RubyGemsgoogle-logging-utils0.2.0indirecta
RubyGemsgoogleauth1.17.1indirecta
RubyGemshighline2.0.3indirecta
RubyGemshttp-accept1.7.0indirecta
RubyGemshttp-cookie1.0.8indirecta
RubyGemshttpclient2.9.0indirecta
RubyGemsi18n1.15.2indirecta
RubyGemsjmespath1.6.2indirecta
RubyGemsjson2.20.0indirecta
RubyGemsjwt3.2.0indirecta
RubyGemskramdown2.5.2indirecta
RubyGemskramdown-parser-gfm1.1.0indirecta
RubyGemslogger1.7.0indirecta
RubyGemsmime-types3.7.0indirecta
RubyGemsmime-types-data3.2026.0701indirecta
RubyGemsmini_magick4.13.2indirecta
RubyGemsmini_mime1.1.5indirecta
RubyGemsminitest5.27.0indirecta
RubyGemsmolinillo0.8.0indirecta
RubyGemsmulti_json1.21.1indirecta
RubyGemsmultipart-post2.4.1indirecta
RubyGemsmutex_m0.3.0indirecta
RubyGemsnanaimo0.4.0indirecta
RubyGemsnap1.1.0indirecta
RubyGemsnaturally2.3.0indirecta
RubyGemsnetrc0.11.0indirecta
RubyGemsnkf0.3.0indirecta
RubyGemsnokogiri1.19.4indirecta
RubyGemsoctokit10.0.0indirecta
RubyGemsopen41.3.4indirecta
RubyGemsoptparse0.8.1indirecta
RubyGemsos1.1.4indirecta
RubyGemsostruct0.6.3indirecta
RubyGemsplist3.7.2indirecta
RubyGemsprocess_executer4.0.4indirecta
RubyGemspstore0.2.1indirecta
RubyGemspublic_suffix4.0.7indirecta
RubyGemsracc1.8.1indirecta
RubyGemsrake13.4.2indirecta
RubyGemsrchardet1.10.2indirecta
RubyGemsrepresentable3.2.0indirecta
RubyGemsretriable3.8.0indirecta
RubyGemsrexml3.4.4indirecta
RubyGemsrouge3.28.0indirecta
RubyGemsruby-macho4.1.0indirecta
RubyGemsruby2_keywords0.0.5indirecta
RubyGemsrubyzip2.4.1indirecta
RubyGemssawyer0.9.3indirecta
RubyGemssecurerandom0.4.1indirecta
RubyGemssecurity0.1.5indirecta
RubyGemssignet0.22.0indirecta
RubyGemssimctl1.6.10indirecta
RubyGemsterminal-notifier2.0.0indirecta
RubyGemsterminal-table3.0.2indirecta
RubyGemstrack_open_instances0.1.15indirecta
RubyGemstrailblazer-option0.1.2indirecta
RubyGemstty-cursor0.7.1indirecta
RubyGemstty-screen0.8.2indirecta
RubyGemstty-spinner0.9.3indirecta
RubyGemstyphoeus1.6.0indirecta
RubyGemstzinfo2.0.6indirecta
RubyGemsuber0.1.0indirecta
RubyGemsunicode-display_width2.6.0indirecta
RubyGemsword_wrap1.0.0indirecta
RubyGemsxcodeproj1.28.1indirecta
RubyGemsxcpretty0.4.1indirecta
RubyGemsxcpretty-travis-formatter1.0.1indirecta
Avisos de dependencias 6

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

PaqueteVersiónRelaciónGravedadAvisosCorregido en
brace-expansion1.1.15indirectaalta15.0.7
brace-expansion2.1.1indirectaalta15.0.7
brace-expansion5.0.6indirectaalta15.0.7
fast-uri3.1.2indirectaalta24.1.1
js-yaml4.2.0indirectaalta14.3.0
serialize-javascript6.0.2indirectaalta27.0.5

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": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 3906,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "IDL": 1,
        "Java": 36947,
        "Ruby": 25363,
        "Shell": 569,
        "Swift": 336541,
        "Kotlin": 422063,
        "JavaScript": 2003,
        "TypeScript": 178374,
        "Objective-C": 25386
      },
      "pushed_at": "2026-07-22T09:20:00Z",
      "created_at": "2019-07-18T00:29:21Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T09:21:17Z",
      "description": "Common files for the Hybrid SDKs",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Kotlin",
      "significant_languages": [
        "Kotlin",
        "Swift",
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://revenuecat.com",
      "name": "RevenueCat",
      "type": "Organization",
      "login": "RevenueCat",
      "company": null,
      "location": "Worldwide",
      "followers": 986,
      "avatar_url": "https://avatars.githubusercontent.com/u/33013347?v=4",
      "created_at": "2017-10-23T02:21:57Z",
      "is_verified": null,
      "public_repos": 74,
      "account_age_days": 3194
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "18.22.2",
          "kind": "patch",
          "published_at": "2026-07-17T17:21:32Z"
        },
        {
          "tag": "18.22.1",
          "kind": "patch",
          "published_at": "2026-07-17T11:40:07Z"
        },
        {
          "tag": "18.22.0",
          "kind": "minor",
          "published_at": "2026-07-17T08:07:52Z"
        },
        {
          "tag": "18.21.0",
          "kind": "minor",
          "published_at": "2026-07-09T11:21:09Z"
        },
        {
          "tag": "18.20.1",
          "kind": "patch",
          "published_at": "2026-07-09T07:59:41Z"
        },
        {
          "tag": "18.20.0",
          "kind": "minor",
          "published_at": "2026-07-09T06:46:37Z"
        },
        {
          "tag": "18.19.1",
          "kind": "patch",
          "published_at": "2026-07-08T18:08:26Z"
        },
        {
          "tag": "18.19.0",
          "kind": "minor",
          "published_at": "2026-07-03T13:05:45Z"
        },
        {
          "tag": "18.18.0",
          "kind": "minor",
          "published_at": "2026-06-29T20:47:47Z"
        },
        {
          "tag": "18.17.0",
          "kind": "minor",
          "published_at": "2026-06-29T11:28:18Z"
        },
        {
          "tag": "18.16.0",
          "kind": "minor",
          "published_at": "2026-06-25T10:45:57Z"
        },
        {
          "tag": "18.8.1",
          "kind": "patch",
          "published_at": "2026-06-24T16:46:29Z"
        },
        {
          "tag": "18.15.1",
          "kind": "patch",
          "published_at": "2026-06-15T10:17:44Z"
        },
        {
          "tag": "18.15.0",
          "kind": "minor",
          "published_at": "2026-06-11T16:07:30Z"
        },
        {
          "tag": "18.14.1",
          "kind": "patch",
          "published_at": "2026-06-11T12:38:06Z"
        },
        {
          "tag": "18.13.0",
          "kind": "minor",
          "published_at": "2026-06-11T09:23:05Z"
        },
        {
          "tag": "18.12.0",
          "kind": "minor",
          "published_at": "2026-06-09T11:21:41Z"
        },
        {
          "tag": "18.11.0",
          "kind": "minor",
          "published_at": "2026-06-05T08:28:50Z"
        },
        {
          "tag": "18.10.0",
          "kind": "minor",
          "published_at": "2026-06-04T09:28:52Z"
        },
        {
          "tag": "18.9.2",
          "kind": "patch",
          "published_at": "2026-06-01T09:50:02Z"
        },
        {
          "tag": "18.9.1",
          "kind": "patch",
          "published_at": "2026-05-28T14:16:20Z"
        },
        {
          "tag": "18.9.0",
          "kind": "minor",
          "published_at": "2026-05-28T10:11:35Z"
        },
        {
          "tag": "18.8.0",
          "kind": "minor",
          "published_at": "2026-05-26T09:50:24Z"
        },
        {
          "tag": "18.7.1",
          "kind": "patch",
          "published_at": "2026-05-21T10:02:45Z"
        },
        {
          "tag": "18.7.0",
          "kind": "minor",
          "published_at": "2026-05-14T10:00:19Z"
        },
        {
          "tag": "18.6.0",
          "kind": "minor",
          "published_at": "2026-05-08T16:50:55Z"
        },
        {
          "tag": "18.5.0",
          "kind": "minor",
          "published_at": "2026-05-07T10:21:47Z"
        },
        {
          "tag": "18.4.0",
          "kind": "minor",
          "published_at": "2026-05-06T15:47:53Z"
        },
        {
          "tag": "18.3.0",
          "kind": "minor",
          "published_at": "2026-05-04T07:51:09Z"
        },
        {
          "tag": "18.2.0",
          "kind": "minor",
          "published_at": "2026-04-30T21:41:31Z"
        },
        {
          "tag": "18.1.0",
          "kind": "minor",
          "published_at": "2026-04-16T14:35:39Z"
        },
        {
          "tag": "18.0.0",
          "kind": "major",
          "published_at": "2026-04-14T16:23:41Z"
        },
        {
          "tag": "17.55.1",
          "kind": "patch",
          "published_at": "2026-04-06T20:08:27Z"
        },
        {
          "tag": "17.55.0",
          "kind": "minor",
          "published_at": "2026-04-06T12:30:38Z"
        },
        {
          "tag": "17.54.0",
          "kind": "minor",
          "published_at": "2026-04-01T07:29:48Z"
        },
        {
          "tag": "17.53.0",
          "kind": "minor",
          "published_at": "2026-03-20T16:06:04Z"
        },
        {
          "tag": "17.52.0",
          "kind": "minor",
          "published_at": "2026-03-18T07:43:44Z"
        },
        {
          "tag": "17.51.1",
          "kind": "patch",
          "published_at": "2026-03-17T14:36:02Z"
        },
        {
          "tag": "17.51.0",
          "kind": "minor",
          "published_at": "2026-03-16T12:59:30Z"
        },
        {
          "tag": "17.50.0",
          "kind": "minor",
          "published_at": "2026-03-13T12:42:10Z"
        },
        {
          "tag": "17.49.0",
          "kind": "minor",
          "published_at": "2026-03-12T16:19:17Z"
        },
        {
          "tag": "17.48.0",
          "kind": "minor",
          "published_at": "2026-03-12T15:25:48Z"
        },
        {
          "tag": "17.47.0",
          "kind": "minor",
          "published_at": "2026-03-12T13:20:51Z"
        },
        {
          "tag": "17.46.1",
          "kind": "patch",
          "published_at": "2026-03-11T12:37:42Z"
        },
        {
          "tag": "17.46.0",
          "kind": "minor",
          "published_at": "2026-03-10T17:37:14Z"
        },
        {
          "tag": "17.45.0",
          "kind": "minor",
          "published_at": "2026-03-09T12:11:12Z"
        },
        {
          "tag": "17.44.0",
          "kind": "minor",
          "published_at": "2026-03-06T17:00:26Z"
        },
        {
          "tag": "17.43.0",
          "kind": "minor",
          "published_at": "2026-03-06T11:22:59Z"
        },
        {
          "tag": "17.42.0",
          "kind": "minor",
          "published_at": "2026-03-02T18:30:32Z"
        },
        {
          "tag": "17.41.1",
          "kind": "patch",
          "published_at": "2026-02-23T12:36:23Z"
        },
        {
          "tag": "17.41.0",
          "kind": "minor",
          "published_at": "2026-02-19T18:49:44Z"
        },
        {
          "tag": "17.40.1",
          "kind": "patch",
          "published_at": "2026-02-19T17:08:23Z"
        },
        {
          "tag": "17.40.0",
          "kind": "minor",
          "published_at": "2026-02-17T17:18:45Z"
        },
        {
          "tag": "17.39.0",
          "kind": "minor",
          "published_at": "2026-02-16T15:54:56Z"
        },
        {
          "tag": "17.38.0",
          "kind": "minor",
          "published_at": "2026-02-13T17:07:47Z"
        },
        {
          "tag": "17.37.0",
          "kind": "minor",
          "published_at": "2026-02-13T14:05:26Z"
        },
        {
          "tag": "17.36.0",
          "kind": "minor",
          "published_at": "2026-02-12T14:28:26Z"
        },
        {
          "tag": "17.35.0",
          "kind": "minor",
          "published_at": "2026-02-11T17:25:59Z"
        },
        {
          "tag": "17.34.0",
          "kind": "minor",
          "published_at": "2026-02-11T14:35:24Z"
        },
        {
          "tag": "17.33.1",
          "kind": "patch",
          "published_at": "2026-02-06T17:43:56Z"
        },
        {
          "tag": "17.33.0",
          "kind": "minor",
          "published_at": "2026-02-06T11:52:26Z"
        },
        {
          "tag": "17.32.0",
          "kind": "minor",
          "published_at": "2026-02-05T11:08:45Z"
        },
        {
          "tag": "17.31.0",
          "kind": "minor",
          "published_at": "2026-02-03T13:21:12Z"
        },
        {
          "tag": "17.30.3",
          "kind": "patch",
          "published_at": "2026-02-03T11:16:33Z"
        },
        {
          "tag": "17.30.2",
          "kind": "patch",
          "published_at": "2026-01-30T11:40:27Z"
        },
        {
          "tag": "17.30.1",
          "kind": "patch",
          "published_at": "2026-01-28T18:33:43Z"
        },
        {
          "tag": "17.30.0",
          "kind": "minor",
          "published_at": "2026-01-28T08:58:53Z"
        },
        {
          "tag": "17.29.0",
          "kind": "minor",
          "published_at": "2026-01-26T13:56:25Z"
        },
        {
          "tag": "17.28.1",
          "kind": "patch",
          "published_at": "2026-01-19T12:25:21Z"
        },
        {
          "tag": "17.28.0",
          "kind": "minor",
          "published_at": "2026-01-16T15:11:43Z"
        },
        {
          "tag": "17.27.1",
          "kind": "patch",
          "published_at": "2026-01-14T18:45:52Z"
        },
        {
          "tag": "17.27.0",
          "kind": "minor",
          "published_at": "2026-01-12T09:07:15Z"
        },
        {
          "tag": "17.26.1",
          "kind": "patch",
          "published_at": "2026-01-02T10:24:58Z"
        },
        {
          "tag": "17.26.0",
          "kind": "minor",
          "published_at": "2025-12-29T17:03:58Z"
        },
        {
          "tag": "17.25.0",
          "kind": "minor",
          "published_at": "2025-12-23T13:38:47Z"
        },
        {
          "tag": "17.24.0",
          "kind": "minor",
          "published_at": "2025-12-15T13:03:27Z"
        },
        {
          "tag": "17.23.0",
          "kind": "minor",
          "published_at": "2025-12-09T18:14:35Z"
        },
        {
          "tag": "17.22.0",
          "kind": "minor",
          "published_at": "2025-12-09T12:18:43Z"
        },
        {
          "tag": "17.21.2",
          "kind": "patch",
          "published_at": "2025-12-01T12:21:42Z"
        },
        {
          "tag": "17.22.0-alphaaidl01",
          "kind": "prerelease",
          "published_at": "2025-12-01T12:01:29Z"
        },
        {
          "tag": "17.21.1",
          "kind": "patch",
          "published_at": "2025-11-27T16:04:08Z"
        },
        {
          "tag": "17.21.0",
          "kind": "minor",
          "published_at": "2025-11-25T16:16:48Z"
        },
        {
          "tag": "17.20.0",
          "kind": "minor",
          "published_at": "2025-11-24T13:48:52Z"
        },
        {
          "tag": "17.19.1",
          "kind": "patch",
          "published_at": "2025-11-20T20:41:43Z"
        },
        {
          "tag": "17.19.0",
          "kind": "minor",
          "published_at": "2025-11-20T15:43:22Z"
        },
        {
          "tag": "17.18.1",
          "kind": "patch",
          "published_at": "2025-11-18T11:11:26Z"
        },
        {
          "tag": "17.18.0",
          "kind": "minor",
          "published_at": "2025-11-17T10:16:47Z"
        },
        {
          "tag": "17.17.0",
          "kind": "minor",
          "published_at": "2025-11-10T15:34:10Z"
        },
        {
          "tag": "17.16.1",
          "kind": "patch",
          "published_at": "2025-11-09T09:56:07Z"
        },
        {
          "tag": "17.16.0",
          "kind": "minor",
          "published_at": "2025-11-06T14:33:43Z"
        },
        {
          "tag": "17.15.1",
          "kind": "patch",
          "published_at": "2025-11-05T15:25:48Z"
        },
        {
          "tag": "17.15.0",
          "kind": "minor",
          "published_at": "2025-11-04T18:10:24Z"
        },
        {
          "tag": "17.14.0",
          "kind": "minor",
          "published_at": "2025-11-03T18:08:26Z"
        },
        {
          "tag": "17.13.0",
          "kind": "minor",
          "published_at": "2025-11-03T14:10:58Z"
        },
        {
          "tag": "17.12.0",
          "kind": "minor",
          "published_at": "2025-10-29T09:15:04Z"
        },
        {
          "tag": "17.11.0",
          "kind": "minor",
          "published_at": "2025-10-21T13:46:35Z"
        },
        {
          "tag": "17.10.0",
          "kind": "minor",
          "published_at": "2025-10-10T06:21:22Z"
        },
        {
          "tag": "17.9.1",
          "kind": "patch",
          "published_at": "2025-10-09T06:07:11Z"
        },
        {
          "tag": "17.9.0",
          "kind": "minor",
          "published_at": "2025-10-02T17:55:56Z"
        },
        {
          "tag": "14.3.0",
          "kind": "minor",
          "published_at": "2025-09-26T08:53:05Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "b9d7bc1b5979b86b99b3a096ddd4d658c821982d",
          "body": "…le (#1726)\n\n## Summary\n\nAdds a `presentationMode` option to `PaywallProxy` so hybrid SDKs can\nchoose the `UIModalPresentationStyle` used when presenting a paywall\n(`pageSheet`, `formSheet`, `fullScreen`, `automatic`).\n\nIt's tricky because it's a iOS thing only.\n\non iPad the presentation style is ha\n[…]\ned\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add presentationMode option to control paywall modal presentation sty…",
          "author_name": "Facundo Menzella",
          "author_login": "facumenzella",
          "committed_at": "2026-07-22T09:19:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a835f5d02d4d798b49ae766c1733bcf6b474bd04",
          "body": "…(#1762)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `9b928b6` to `b52fca5`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/b52fca5c7fe858816abb61\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `9b928b6` to `b52fca5` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T15:44:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbe48b550baa34ae3cef96ec5e31647cb7111079",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.81.0 => 5.81.1 Android 10.14.0 => 10.14.1 (#1759)\nvia RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane-plugin-revenuecat_internal from `c970fb6` to `9b928b6`\n(#1758) via dependabot[bo\n[…]\nfor commit\na7ba6df1ac467f18ef9b80151c3911ba1de387f8. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.22.2 (#1760)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-17T17:24:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "355fe5f35525664f3d7c1302a8fcd81ed0118328",
          "body": "[AUTOMATIC] iOS 5.81.0 => 5.81.1 Android 10.14.0 => 10.14.1\n\nThe JS bump (1.47.2 => 1.47.3) was dropped from this PR: 1.47.3 breaks\nReact Native/Expo release builds via a non-static dynamic `import()`\n(see #1755). purchases-js stays pinned at 1.47.2.\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low R\n[…]\n(https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n---------\n\nCo-authored-by: Antonio Pallares <antonio.pallares@revenuecat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.81.0 => 5.81.1 Android 10.14.0 => 10.14.1 (#1759)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-17T16:29:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "471ab8200ab54478629b8734b47657956ebbaba2",
          "body": "…(#1758)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `c970fb6` to `9b928b6`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/9b928b6ca92e965ecb7d63\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `c970fb6` to `9b928b6` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-17T15:43:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5702db143596d91968786491c0d887787f350794",
          "body": "**This is an automatic release.**\n\n### 🔄 Other Changes\n* fix: revert purchases-js 1.47.3 => 1.47.2 to unblock React Native\nbuilds (#1755) via Antonio Pallares (@ajpallares)\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Dependency downgrade only with coordinated version/changelog updates;\n\n[…]\nfor commit\n3c5ae3f90257259ffd4d5bfcf25563442d1d9715. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.22.1 (#1756)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-17T11:52:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3961d656d8c5cc18266ba77d294956c4f8578e2c",
          "body": "### Motivation\n\nThe `danger` job relied on the orb's old default Ruby `3.1.2`, which no\nlonger satisfies gems requiring Ruby >= 3.2 — `bundle install` fails as\nBundler backtracks to an unbuildable `nokogiri`. (`automatic-bump`/`tag`\nhere already pin 3.3.0.)\n\n### Summary\n\n- Bump `revenuecat/sdks-comm\n[…]\nfor commit\n871ac60a3c78fdc35847c1509a9726d9e32b1e26. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "ci: bump sdks-common-config orb to 4.5.0 (#1757)",
          "author_name": "Antonio Pallares",
          "author_login": "ajpallares",
          "committed_at": "2026-07-17T11:32:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a21ef0e1a4ebc2ed707b628776183c59f75b7269",
          "body": "…lds (#1755)\n\n### Description\nReverts #1748. purchases-js 1.47.3 bundles purchases-ui-js 4.8.6, whose\n`web_view` host loader added a bare dynamic `import(<variable>)`.\nMetro's `collectDependencies` rejects a non-static `import()` at build\ntime with no escape hatch, so React Native/Expo **Release** b\n[…]\n2a. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix: revert purchases-js 1.47.3 => 1.47.2 to unblock React Native bui…",
          "author_name": "Antonio Pallares",
          "author_login": "ajpallares",
          "committed_at": "2026-07-17T11:09:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9475ce93ad71755faae9a860c48eddd5d8d83566",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.80.3 => 5.81.0 Android 10.13.0 => 10.14.0 (#1751)\nvia RevenueCat Git Bot (@RCGitBot)\n* [AUTOMATIC] JS 1.47.2 => 1.47.3 (#1748) via RevenueCat Git Bot\n(@RCGitBot)\n* [AUTOMATIC] Update `Podfile.lock` (#17\n[…]\nugbot](https://cursor.com/bugbot) is generating a\nsummary for commit 66ffdca494bc3485715ca74d07d98ff2eebe90af. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.22.0 (#1754)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-17T08:11:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1182df28598ec514c5fa743d571366c4938d041b",
          "body": "…(#1753)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `dab6765` to `c970fb6`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/c970fb6d9b93cb7e9f0e49\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `dab6765` to `c970fb6` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-17T07:04:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d0d2697c7b1e0e05bea14ba328c301b0b5f8b42",
          "body": "[AUTOMATIC] iOS 5.80.3 => 5.81.0 Android 10.13.0 => 10.14.0\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Version-pin-only changes with no hybrid code edits; residual risk is\nwhatever shipped in the upstream RevenueCat minor/patch releases.\n> \n> **Overview**\n> Bumps the pinned **RevenueCa\n[…]\nr automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.80.3 => 5.81.0 Android 10.13.0 => 10.14.0 (#1751)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-17T06:45:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71b566ae37cacab918a4ddee47d8b0dcf539348f",
          "body": "…ation (#1749)\n\n## What changed\n\nAdds an internal-only `dangerousSettings` object (carrying\n`useWorkflows`) to the shared `PurchasesConfiguration` TypeScript type,\nso hybrid SDKs can enable RevenueCat Workflows (multipage paywalls). The\nfield and its contents are marked `@internal` and stay out of t\n[…]\n3e4d31faa3556984ce5195f00a06ef77b58c09b. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add internal DangerousSettings an `useWorkflows` to PurchasesConfigur…",
          "author_name": "Cesar de la Vega",
          "author_login": "vegaro",
          "committed_at": "2026-07-17T06:34:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8aadcf05650b643feafbad7e549c8340ab8a6640",
          "body": "[AUTOMATIC] JS 1.47.2 => 1.47.3\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Patch-level dependency-only change with no code modifications in this\npackage; risk depends on what changed in purchases-js 1.47.3 upstream.\n> \n> **Overview**\n> Bumps the **`@revenuecat/purchases-js`** dependenc\n[…]\nfor commit\n49882c6521fd8a40e20c4ff8c61db6f16ce2ce53. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] JS 1.47.2 => 1.47.3 (#1748)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-14T09:16:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8be80aa5de1b21ffcd090c147db19c120679b59e",
          "body": "Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.9 to\n2.1.10.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/evilmartians/lefthook/releases\">lefthook's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v2.1.10</h2>\n<h2>Changelog</h2>\n<ul>\n<li>c0a3\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump lefthook from 2.1.9 to 2.1.10 (#1747)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T15:42:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1e787af136667a3e14fa7fb943638d40fc926c4",
          "body": "The auto-merge GitHub Actions job fails with `User is not authorized for\nthis protected branch` because it enables auto-merge as\n`github-actions[bot]`, which isn't on the `main` branch protection\nallowlist (only `@RevenueCat/sdk` is).\n\nEnable auto-merge from CircleCI instead, using the RCGitBot toke\n[…]\nfor commit\nebaf38dafacc020de1ea2a0c37733ed6e82d4234. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Enable dependency-update auto-merge from CircleCI (#1741)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-07-13T10:01:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18ce7fde54dda87efcb31746e647c21de6ed6045",
          "body": "[AUTOMATIC]\n\nCocoaPods was bumped\n[here](https://github.com/RevenueCat/purchases-hybrid-common/pull/1742)\nbut Podfile.lock wasn't updated\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Tooling metadata only in the lockfile; no dependency or application\ncode changes.\n> \n> **Overview**\n> Upd\n[…]\nfor commit\n1c1950fb1dbcdec41a63e52d33cbca739071c6d8. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Update `Podfile.lock` (#1746)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-13T09:47:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7920fe0763ac2f1de8d020402e78d76da39e30ff",
          "body": "Mise for local dev (java, ruby, node 24.18.0, yarn via corepack). CI:\n`install-mise-tools` with selective `tools:` — `java` on android jobs,\n`node` everywhere we had `node/install` or npm deploy. Dropped `node`\norb and Node cimgs on those jobs.\n\nPR dry-runs: typescript / esm / js-mappings deploy lan\n[…]\nfor commit\n95afd63d9db32fda767ecac7474d88c89d37399b. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Use mise for Ruby, Node, and Yarn too (#1734)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-07-13T08:25:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ca792dacabe9a902586a2bc11cd9910be14eb075",
          "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|\n[revenuecat](https://circleci.com/developer/orbs/orb/revenuecat/sdks-common-config)\n| orb | minor | `4.3.0` → `4.4.0` |\n\n---\n\n### Configuration\n\n📅 **Schedule**: (UTC)\n\n- Branch creation\n  - At any time \n[…]\nt up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>",
          "is_bot": false,
          "headline": "[RENOVATE] Update dependency revenuecat to v4.4.0 (#1743)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-13T07:11:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90b0a1331edfbb97b870ed2856a8088d56294636",
          "body": "Bumps [cocoapods](https://github.com/CocoaPods/CocoaPods) from 1.16.2 to\n1.17.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/CocoaPods/CocoaPods/releases\">cocoapods's\nreleases</a>.</em></p>\n<blockquote>\n<h2>1.17.0</h2>\n<h5>Enhancements</h5>\n<ul>\n<li>\n<p\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump cocoapods from 1.16.2 to 1.17.0 (#1742)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-10T15:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e17b05af9a961bbbef02d920a933c18fb1334cd2",
          "body": "\\[AUTOMATIC\\] JS 1.47.1 => 1.47.2\n\n---\n\n> \\[!NOTE\\]<br>**Low Risk**<br>Dependency version pin and lockfile only;\nno logic changes in this PR.\n>\n> **Overview**<br>Bumps the `@revenuecat/purchases-js` dependency in\n`purchases-js-hybrid-mappings` from **1.47.1** toog **1.47.2**, with the\nmatching `yarn\n[…]\n<https://cursor.com/bugbot>) for commit\neb5b28c036d205481505fe902186653cfa6b269e. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](<https://www.cursor.com/dashboard/bugbot>).",
          "is_bot": false,
          "headline": "[AUTOMATIC] JS 1.47.1 => 1.47.2 (#1739)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-10T10:45:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a15373c76dac95a9edb122c8b6aef9af8a849909",
          "body": "Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.236.1 to\n2.237.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/fastlane/fastlane/releases\">fastlane's\nreleases</a>.</em></p>\n<blockquote>\n<h2>2.237.0 Improvements</h2>\n<ul>\n<li>[ci] drop Circl\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane from 2.236.1 to 2.237.0 (#1738)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-09T15:59:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4a689c2720f0a4181dd6d1c6d39d9a2476cb8c70",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.80.2 => 5.80.3 Android 10.12.0 => 10.13.0 JS 1.47.0\n=> 1.47.1 (#1736) via RevenueCat Git Bot (@RCGitBot)\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Release-only version and changelog updat\n[…]\nfor commit\n576a846aed537a1f149d004429458ebbc8284bd5. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.21.0 (#1737)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-09T11:28:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e51a277d7cdc0a646f51aac9b447aa6eb1b0c014",
          "body": "… => 1.47.1 (#1736)\n\n[AUTOMATIC] iOS 5.80.2 => 5.80.3 Android 10.12.0 => 10.13.0 JS 1.47.0 =>\n1.47.1\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Version-pin-only changes with no hybrid logic edits; residual risk is\nwhatever shipped in the underlying native SDK patch releases.\n> \n> **Ove\n[…]\nfor commit\n7cfeda3666994459a9b7356e1672e435d9e9d71a. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.80.2 => 5.80.3 Android 10.12.0 => 10.13.0 JS 1.47.0…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-09T10:43:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68ee879c9dfafdd29f4abc2b437e349060f4eea4",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* fix: Serialize redeemWebPurchase error as a dictionary to avoid crash\n(DSE-39) (#1728) via Toni Rico (@tonidero)\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Release-only version and changelog updates; no application l\n[…]\nfor commit\nb2a48320ba9a089f0a98e8771a0499bd9bb5fb10. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.20.1 (#1735)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-09T08:05:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "082023ad26f64a388c523f0b3d75daa4152c811b",
          "body": "… (DSE-39) (#1728)\n\n### Description\n\nWhen `redeemWebPurchase` resolves to an error, the error was placed in\nthe result map as a raw `ErrorContainer` object (iOS `RCErrorContainer`\n/ Android `ErrorContainer`) and passed through the platform channel.\nPlatform codecs cannot encode an arbitrary object, \n[…]\nfor automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Serialize redeemWebPurchase error as a dictionary to avoid crash…",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-07-09T07:22:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e895672ca543b69d66302954ece759b1a8625626",
          "body": "**This is an automatic release.**\n\n## RevenueCatUI SDK\n### ✨ New Features\n* Expose the new PreviewPaywall handler (#1732) via Dave DeLong\n(@davedelong)\n\n### 🔄 Other Changes\n* Regenerate Package.resolved via swift package resolve on iOS bumps\n(#1729) via Álvaro Brey (@AlvaroBrey)\n\n<!-- CURSOR_SUMMARY\n[…]\nfor commit\n4d7df3997fa5a02ab66dbe7d06c57d741727f28c. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.20.0 (#1733)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-09T06:53:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99edbe0af8e3831a10940e9f6e55cb5796256007",
          "body": null,
          "is_bot": false,
          "headline": "Expose the new PreviewPaywall handler (#1732)",
          "author_name": "Dave DeLong",
          "author_login": "davedelong",
          "committed_at": "2026-07-08T20:37:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47f36d8ac497a8b390ef3d881eb73ea745e5d142",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* Map autoResumeDate from purchases-js SubscriptionInfo in JS hybrid\nmappings (#1730) via Álvaro Brey (@AlvaroBrey)\n\n### 🔄 Other Changes\n* Use mise for Java in CI (#1727) via Álvaro Brey (@AlvaroBrey)\n\n<!-- CURSOR_SUMMARY -->\n---\n\n>\n[…]\nfor commit\nc61f14c05379d21d5354103bd55ec759b68e58ec. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.19.1 (#1731)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-08T18:24:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "299ccc36b3b206276a6298b33f70e1303a0e6100",
          "body": "…1729)\n\n### Motivation\n\nThe automatic iOS bump updated `Package.resolved` by text-replacing the\nprevious version and commit hash. If the file ever got out of sync (a\nmanual bump in #1461 missed it), the pattern never matched again and\nevery later bump silently skipped the file. It stayed pinned at 5\n[…]\nfor commit\nb93ae061e229200c739f67b21cf98b135e9a59e7. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Regenerate Package.resolved via swift package resolve on iOS bumps (#…",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-07-08T15:22:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc06ec90046086b9a52792282c4c38eaf8907cf0",
          "body": "…ppings (#1730)\n\n### Motivation\n\nFollow-up to\nhttps://github.com/RevenueCat/purchases-hybrid-common/pull/1698#discussion_r3491495706:\nthe JS mappings hardcoded `autoResumeDate: null` because purchases-js\ndid not expose it yet.\n\n### Description\n\npurchases-js exposes `autoResumeDate` on `SubscriptionI\n[…]\nfor commit\nea90cbadaf5682cf736b15e0b4944d472c780b1d. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Map autoResumeDate from purchases-js SubscriptionInfo in JS hybrid ma…",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-07-08T15:12:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d502dcfab89e3ef75aa21f3493bd52818fa14d0c",
          "body": "Replaces the custom `install-sdkman` command with `revenuecat/install-mise-tools` across all Android CI jobs. The `sdks-common-config` orb is bumped to `4.3.0` to support this.   \n  \nThe `.sdkmanrc` file is retained for reference but marked as deprecated. The `mise.lock` file is updated with platfor\n[…]\nfor commit e89e30ee5ddc868cc0ae36634b9445dcecc1f41c. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Use mise for Java in CI (#1727)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-07-08T10:25:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b86b2e39c0d8f7d440ee61c8292d66133f092947",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.80.0 => 5.80.2 Android 10.11.0 => 10.12.0 JS 1.46.0\n=> 1.47.0 (#1724) via RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Remove BillingClient v7 (bc7) flavor (#1722) via Toni Rico (@tonidero)\n* B\n[…]\nfor commit\n260f01b449cdd42ac655272448b10d095957ed7c. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.19.0 (#1725)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-03T13:08:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "70ea03aadc0af93edee4cf6a18fd5924aefe4cd2",
          "body": "… => 1.47.0 (#1724)\n\n[AUTOMATIC] iOS 5.80.0 => 5.80.2 Android 10.11.0 => 10.12.0 JS 1.46.0 =>\n1.47.0\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Version-pin-only changes with no hybrid mapping or business logic\nedits; risk is limited to upstream SDK behavior in patch/minor releases.\n> \n\n[…]\nfor commit\ndecd4830152379542a303ee82a7afc56458ebdfe. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.80.0 => 5.80.2 Android 10.11.0 => 10.12.0 JS 1.46.0…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-07-03T11:20:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dc7bd42d37de7c868a6e0f6623b139d29625c8a1",
          "body": "## Description\n\nRemoves the BillingClient v7 (`bc7`) product flavor from the Android\nhybrid-common libraries and the dimension as well\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Medium Risk**\n> This is a packaging and dependency-matrix change: consumers pinned to\n`-bc7` artifacts must move to the d\n[…]\ned\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove BillingClient v7 (bc7) flavor (#1722)",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-07-02T12:29:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d8f094962198f17d52e8b4afe9f1352bd969ff75",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### ✨ New Features\n* Expose `autoResumeDate`, `displayName`, `managementURL`,\n`productPlanIdentifier` on `SubscriptionInfo` (#1698) via Álvaro Brey\n(@AlvaroBrey)\n\n### 🔄 Other Changes\n* Commit yarn.lock for JS/TS packages and enforce --frozen-lockf\n[…]\nfor commit\nad27d508f95d64fe45c1755745057d9da0224d4d. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.18.0 (#1719)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-29T21:01:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0bdfaa8b6c3cd3b7f0a0889263b0a9e69d247c59",
          "body": "…(#1720)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `70bf5c7` to `dab6765`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/dab67655d71eaf08b40f74\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `70bf5c7` to `dab6765` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T17:31:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b2582433143201520f9d4916127866d808fe32d",
          "body": "…Identifier` on `SubscriptionInfo` (#1698)\n\nExposes several new fields from `SubscriptionInfo`\n\nCloses SDK-4382\n\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Additive API and serialization changes with tests; no auth or\npurchase-flow logic changes. Minor contract expansion for consumers \n[…]\nfor commit\n8ef80ee6c2dac1719c7de8e20ea36a579b7fd136. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Expose `autoResumeDate`, `displayName`, `managementURL`, `productPlan…",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-29T14:30:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92ddab4c4d0feb791e9f3e44763ec050f967c0a4",
          "body": "…CI (#1715)\n\nWe have no lockfiles for NPM packages in this repo, resulting in builds\nnot being reproducible in some cases.\n\nFor example, [this\nfailure](https://github.com/RevenueCat/purchases-hybrid-common/pull/1714)\nis caused by Prettier getting an update, and a branch that was passing\nprettier che\n[…]\nfor commit\nf36c4e0fe263d63f37f2c203fb757729749ae88b. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Commit yarn.lock for JS/TS packages and enforce --frozen-lockfile in …",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-29T12:50:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3738f538068c2f19785f8168df7c583487e4050",
          "body": "Bumps [faraday](https://github.com/lostisland/faraday) from 1.10.5 to\n1.10.6.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/lostisland/faraday/releases\">faraday's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v1.10.6</h2>\n<h2>What's Changed</h2>\n<ul>\n<li>See if\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump faraday from 1.10.5 to 1.10.6 (#1716)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T11:42:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a018c24171df664e26eaf536f02278d8bb6a5d2f",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* Skip bump_hybrid_dependencies when version is older than latest\npublished (#1708) via Álvaro Brey (@AlvaroBrey)\n### 📦 Dependency Updates\n* [AUTOMATIC] Android 10.10.0 => 10.11.0 (#1712) via RevenueCat Git Bot\n(@RCGitBot)\n* [AUTOMA\n[…]\n is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Toni Rico <toni.rico.diez@revenuecat.com>",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.17.0 (#1713)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-29T11:31:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a17881ce6f1b39f94ce18e7c3ae9761d7df974e",
          "body": "Blocking existing open PRs\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Cosmetic formatting only; `calculatePresentedOfferingContext` behavior\nis unchanged.\n> \n> **Overview**\n> Reformats the `targetingContext` type assertion in\n`calculatePresentedOfferingContext` so it matches **Prettier\n[…]\nfor commit\nfed6a3bec18efe9ec6490cff70c46fb6b2d1e206. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Fix Prettier 3.9.x formatting in purchases-common.ts (#1714)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-29T09:53:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "00368a43da2a5aea30cb098f3a6bbcae5695bb2b",
          "body": "[AUTOMATIC] Android 10.10.0 => 10.11.0\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Single dependency version bump with no application code changes; risk\nis limited to SDK 10.11.0 behavior in purchase flows.\n> \n> **Overview**\n> Bumps the shared **`purchases`** version in\n`android/gradle/\n[…]\nfor commit\n93ba238fa919710ef9dda6f9b8c72b71617f0fc8. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Android 10.10.0 => 10.11.0 (#1712)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-29T09:30:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa81fd9cc3a1bb3241bcd2cc79b7ba0da151769e",
          "body": "[AUTOMATIC] iOS 5.79.0 => 5.80.0 JS 1.45.0 => 1.46.0\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Version-only bumps in lockfiles and package manifests; behavior\nchanges would come from upstream SDK releases, not from edits in this\nrepo.\n> \n> **Overview**\n> Automatic dependency alignment\n[…]\nfor commit\n39fffcc6a901f989c98a9266837c1fd02c1b3f11. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.79.0 => 5.80.0 JS 1.45.0 => 1.46.0 (#1707)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-26T14:31:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "247d669231fead581b7d48f349d43490bb29f5c1",
          "body": "…shed (#1708)\n\n`bump_hybrid_dependencies` unconditionally propagated the just-released\nPHC version to all dependent repos, with no check against PHC's own\npublished history. When a backport patch (e.g. 18.8.1) was released\nwhile main was already at 18.16.0, all dependents received a downgrade\nPR.\n\nF\n[…]\nfor commit\n2e3a3e0f2ba4d09b664a1fa99d1ba358ff00a356. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Skip bump_hybrid_dependencies when version is older than latest publi…",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-26T13:01:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8e1143bcb61def8a46226c05ac2713ff9c69db9",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.78.0 => 5.79.0 Android 10.9.1 => 10.10.0 JS 1.42.4\n=> 1.45.0 (#1703) via RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Use mise for JDK management (#1699) via Álvaro Brey (@AlvaroBrey)\n* Bump no\n[…]\nfor commit\na57a0e84f49086326be84d30cb6f630ff4fe4dde. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.16.0 (#1706)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-25T10:49:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "19b9b2e9cc399b76696d4850a787313de688f162",
          "body": "…=> 1.45.0 (#1703)\n\n[AUTOMATIC] iOS 5.78.0 => 5.79.0 Android 10.9.1 => 10.10.0 JS 1.42.4 =>\n1.45.0\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Dependency version bumps with small test-only conformance fixes; no\nhybrid production API changes in this diff.\n> \n> **Overview**\n> Bumps native\n[…]\nde reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n---------\n\nCo-authored-by: Cesar de la Vega <664544+vegaro@users.noreply.github.com>",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.78.0 => 5.79.0 Android 10.9.1 => 10.10.0 JS 1.42.4 …",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-24T16:01:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7be9203d4c7d92bb759a128f938214ea6de355a0",
          "body": "Enables `mise` to manage the JDK for this project, removing the need for\n`sdkman` just for the JDK. Other repos like\n`https://github.com/RevenueCat/purchases-ios` already use `mise`, this\ntakes us closer to a single env setup tool.\n\nsdkman is also kept alive for now. Local development only; I didn't\n[…]\nfor commit\nc9bda808983b78f0224b56045a3afb8e0541533d. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Use mise for JDK management (#1699)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-23T08:27:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11b059f94c0dd7086413496a5bce44ff9bf4ddac",
          "body": "Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.19.3\nto 1.19.4.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/sparklemotion/nokogiri/releases\">nokogiri's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v1.19.4 / 2026-06-18</h2>\n<h3>Security</h3\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump nokogiri from 1.19.3 to 1.19.4 (#1701)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T07:25:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d72ee998e4c06bf774352dc476d4ddd832a8cbe",
          "body": "Bumps [danger](https://github.com/danger/danger) from 9.5.3 to 9.6.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/danger/danger/releases\">danger's\nreleases</a>.</em></p>\n<blockquote>\n<h2>9.6.0</h2>\n<ul>\n<li>Support ranged inline markdown comments on Git\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump danger from 9.5.3 to 9.6.0 (#1700)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T07:06:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "951ce2acecba6b5a4e600edc74b1fe19d25d4d8f",
          "body": "…1697)\n\nBump common config orb to 4.1.0 to include error codes reminder\n\nAlso migrates `output` to multi-file `outputs`, was leftover when\nreleased\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> CI configuration only; no application runtime or release artifact\nlogic changes beyond how the \n[…]\nfor commit\nc5df62b66d8bc3c076991f381931505130da0274. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Bump sdks-common-config orb to 4.1.0 and migrate output to outputs (#…",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-19T11:21:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef20f68c89d2f0539336f83946d970c385680c6c",
          "body": "- Adopts generated code from `purchases-error-codes`\n- Adds update job and manual modification guard\n- Re-exports from `errors.ts` so we avoid API changes\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Enum values and public exports are preserved via re-export; changes\nare mostly codegen a\n[…]\nfor commit\nefe3150a82fd2952579e3c23514f6f825a5f48cf. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "Adopt generated PURCHASES_ERROR_CODE (#1693)",
          "author_name": "Álvaro Brey",
          "author_login": "AlvaroBrey",
          "committed_at": "2026-06-18T07:11:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd17e739e9abf1faee70c2ea1d5b0d1fa4eb92aa",
          "body": "…1690)\n\n### Motivation\n\npurchases-flutter now vendors the `purchases-js-hybrid-mappings` UMD\nbundle (RevenueCat/purchases-flutter#1785). To guard against tampering\nbetween our release and the downstream bump, Flutter should verify the\nbundle it downloads against a hash we control.\n\n### Summary\n\n- Co\n[…]\n97. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Pass purchases-js-hybrid-mappings sha256 to purchases-flutter bump (#…",
          "author_name": "Antonio Pallares",
          "author_login": "ajpallares",
          "committed_at": "2026-06-16T15:20:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c755e89ad0cdfd138151eb12f34816e18412a53a",
          "body": "Adds a 3-day cooldown to Dependabot so we don't pick up dependency\nversions that were released less than 3 days ago. Our own\n`fastlane-plugin-revenuecat_internal` is excluded from the cooldown so\nit continues to update immediately.\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Configurati\n[…]\nfor automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Add 3-day Dependabot cooldown, excluding fastlane plugin (#1691)",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-06-16T09:08:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "38df36ae7dcbf9f2490c3c77852f6692c295e950",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] Android 10.9.0 => 10.9.1 JS 1.42.3 => 1.42.4 (#1688) via\nRevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane-plugin-revenuecat_internal from `ce6a7ef` to `70bf5c7`\n(#1687) via dependabot[bot] \n[…]\nfor commit\nc2eb50e2de900a226473e41188d51519b171853d. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.15.1 (#1689)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-15T10:20:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b039b91229fe1baee342fd8ab0334d034eaf1906",
          "body": "[AUTOMATIC] Android 10.9.0 => 10.9.1 JS 1.42.3 => 1.42.4\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **Low Risk**\n> Patch-level dependency bumps in version catalogs with no code changes;\nrisk is limited to upstream SDK behavior in those releases.\n> \n> **Overview**\n> This automatic PR bumps pinned SDK \n[…]\nfor commit\n9c52d63f8b56f66b29b63e3563c9d7ab34cfe648. Bugbot is set up for automated\ncode reviews on this repo. Configure\n[here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
          "is_bot": false,
          "headline": "[AUTOMATIC] Android 10.9.0 => 10.9.1 JS 1.42.3 => 1.42.4 (#1688)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-15T09:14:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "172b368df3263c8f2ec4562904973414e66c0433",
          "body": "…(#1687)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `ce6a7ef` to `70bf5c7`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/70bf5c7008bb8581eb95fe\n[…]\nww.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `ce6a7ef` to `70bf5c7` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-12T15:53:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b8e85c2506a8857b5f9bedff1e6ff38e04852a2d",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### ✨ New Features\n* feat: Add `setAppsFlyerConversionData` attribute method (#1683) via\nToni Rico (@tonidero)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.15.0 (#1684)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-11T16:22:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1680d70feaf13c6647b452d7c5bf0534ef66e7d",
          "body": "Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.236.0 to\n2.236.1.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/fastlane/fastlane/releases\">fastlane's\nreleases</a>.</em></p>\n<blockquote>\n<h2>2.236.1 Improvements</h2>\n<ul>\n<li>Revert &quot;[t\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane from 2.236.0 to 2.236.1 (#1685)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-11T15:42:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f738da0de3a28d33716c04668a65403d7829ce93",
          "body": "Adds a wrapper for `setAppsFlyerConversionData` so integration with\nappsflyer can become a simple one liner.",
          "is_bot": false,
          "headline": "feat: Add `setAppsFlyerConversionData` attribute method (#1683)",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-06-11T15:26:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6cf46c996485f7853bf074c8b4396d9466c75810",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* [android] Skip Galaxy module during bc7 publishing (#1679) via Rick\n(@rickvdl)\n\n### 🔄 Other Changes\n* [android] Add Android deploy dry-run CI check (#1680) via Rick\n(@rickvdl)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.14.1 (#1681)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-11T12:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65383135904872fbcd30b6cc73f3c487b82b32af",
          "body": "Deploying to Maven\n[recently](https://github.com/RevenueCat/purchases-hybrid-common/pull/1679)\nfailed, which was only discovered during release, breaking PHC deploys.\nThis PR adds a `dry-run` option and corresponding CI job that runs on\nevery PR and should catch these issues early.",
          "is_bot": false,
          "headline": "[android] Add Android deploy dry-run CI check (#1680)",
          "author_name": "Rick",
          "author_login": "rickvdl",
          "committed_at": "2026-06-11T11:10:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c284113b0f016fc1cad7f1fbcd99ff037db6b5f2",
          "body": "The Galaxy module does not support the bc7 flavor. Deploying to maven\nfailed because it did expect the bc7 flavor to be there. This should\nensure module is only added when not explicitly using the bc7 flavor.",
          "is_bot": false,
          "headline": "[android] Skip Galaxy module during bc7 publishing (#1679)",
          "author_name": "Rick",
          "author_login": "rickvdl",
          "committed_at": "2026-06-11T10:58:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0ccdf13200b1804b2de9d30a02ea27e9f402367",
          "body": "## Summary\nThis PR adds the `purchases-hybrid-common-store-galaxy` add-on\ndependency that allows simplified bringing Galaxy Store support to the\nhybrid SDKs.\n\n## Motivation\nThe addition of the wrapper dependency simplifies dependency version\nmanagement by allowing the hybrid SDKs to just depend on a\n[…]\nt 15 20 36\"\nsrc=\"https://github.com/user-attachments/assets/501969d1-caec-4737-99ed-1df6a28dc27b\"\n/>\n\n## Testing\n\n- [x] Verify version bump works as expected for release\n- [x] Extensive manual testing",
          "is_bot": false,
          "headline": "Add Galaxy Store wrapper dependency for hybrid SDKs (#1673)",
          "author_name": "Rick",
          "author_login": "rickvdl",
          "committed_at": "2026-06-11T09:43:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d9e83b79b8ab7ff52fa6482b224630e80c37098d",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] Android 10.8.0 => 10.9.0 JS 1.42.1 => 1.42.3 (#1676) via\nRevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane from 2.235.0 to 2.236.0 (#1674) via dependabot[bot]\n(@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.13.0 (#1677)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-11T09:30:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "801749b35dca16f613c308a856b6e6b850eceba7",
          "body": "[AUTOMATIC] Android 10.8.0 => 10.9.0 JS 1.42.1 => 1.42.3",
          "is_bot": false,
          "headline": "[AUTOMATIC] Android 10.8.0 => 10.9.0 JS 1.42.1 => 1.42.3 (#1676)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-11T07:54:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef30a8c389c1f085f4a9982cde0a44b74a1d6d40",
          "body": "Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.235.0 to\n2.236.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/fastlane/fastlane/releases\">fastlane's\nreleases</a>.</em></p>\n<blockquote>\n<h2>2.236.0 Improvements</h2>\n<ul>\n<li>[ci] fix: add '\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane from 2.235.0 to 2.236.0 (#1674)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-09T16:00:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "091f9025d2fd9148c015e23751436c030725df54",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.76.0 => 5.78.0 JS 1.42.0 => 1.42.1 (#1671) via\nRevenueCat Git Bot (@RCGitBot)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.12.0 (#1672)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-09T11:27:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b0d6a5e09bed7e6a8463a8633b5978a9c3cbc2b",
          "body": "[AUTOMATIC] iOS 5.76.0 => 5.78.0 JS 1.42.0 => 1.42.1",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.76.0 => 5.78.0 JS 1.42.0 => 1.42.1 (#1671)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-09T10:12:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5ec3fa5bf0e4055f13d0e999d0b805fe6664862",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### ✨ New Features\n* Expose originalJson and signature on StoreTransaction (#1668) via Toni\nRico (@tonidero)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.11.0 (#1669)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-05T08:31:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1b2abb4777170934a7ce00a86983746ac85ca99",
          "body": "Some developers have asked for access to the purchase `originalJson` and\n`signature` properties so they can verify purchases on their own backend\nwithout using `PurchasesAreCompletedBy.MY_APP`.\n\nThis exposes both on the hybrid `StoreTransaction` model. They are\noptional: only populated on Android (`signature` is Google Play only),\nand `null` on iOS.\n\n---------\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expose originalJson and signature on StoreTransaction (#1668)",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-06-05T07:38:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "812edae4f1902a6ceed1a1adebaae6564041dbae",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.75.0 => 5.76.0 Android 10.7.0 => 10.8.0 JS 1.41.2 =>\n1.42.0 (#1666) via RevenueCat Git Bot (@RCGitBot)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.10.0 (#1667)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-04T09:32:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7ab5c28bfc15574b5dd56dc984b5f7b07334335",
          "body": "…> 1.42.0 (#1666)\n\n[AUTOMATIC] iOS 5.75.0 => 5.76.0 Android 10.7.0 => 10.8.0 JS 1.41.2 =>\n1.42.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.75.0 => 5.76.0 Android 10.7.0 => 10.8.0 JS 1.41.2 =…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-04T08:53:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0b2b2f3d50f9eef8683db1e9da7f67f4aaf01c3",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* Fix paid introductory price not mapped for Web Billing (#1662) via\nAntonio Pallares (@ajpallares)\n\n### 🔄 Other Changes\n* Remove KMP from automatic PHC dependency update triggers (#1583) via\nAntonio Pallares (@ajpallares)\n* Bump fastlane-plugin-revenuecat_internal from `af7bb5c` to `ce6a7ef`\n(#1660) via dependabot[bot] (@dependabot[bot])\n* Bump lefthook from 2.1.8 to 2.1.9 (#1661) via dependabot[bot]\n(@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.9.2 (#1664)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-06-01T09:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "928ff13dbf1a4a9ac6f54425be584ed753c53421",
          "body": "- [x] purchases-kmp is removing the `on-action-upgrade-hybrid-common`\nCircleCI workflow in\nhttps://github.com/RevenueCat/purchases-kmp/pull/770. This PR removes\nthe step in PHC's `trigger-dependent-updates` job that triggers that\nworkflow, so it won't fail after the KMP change is merged.\n\n- [x]\nhttps://github.com/RevenueCat/purchases-kmp/pull/770/changes#r2997041671\n\n- [x] N/A — CI config change only.\n\nMade with [Cursor](https://cursor.com)",
          "is_bot": false,
          "headline": "Remove KMP from automatic PHC dependency update triggers (#1583)",
          "author_name": "Antonio Pallares",
          "author_login": "ajpallares",
          "committed_at": "2026-06-01T08:55:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b7c2e3b9efc20ad0501e2fb51c97a13741676df",
          "body": "### Motivation\n\nWeb Billing products with a **paid** introductory price (e.g. $10 the\nfirst year, then $20/year) were reported by hybrid SDKs with\n`introPrice: null`. The API returns the intro price correctly, but the\n`purchases-js` hybrid offerings mapper dropped it.\n\n### Summary\n\n- `mapIntroPrice`\n[…]\nay consistent.\n- Added unit tests for a paid intro with no trial, and for the\ntrial+intro case.\n\n### Notes\n\nFree-trial mapping is unchanged.\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Fix paid introductory price not mapped for Web Billing (#1662)",
          "author_name": "Antonio Pallares",
          "author_login": "ajpallares",
          "committed_at": "2026-06-01T08:40:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef4c78929d021174905ae6f3468a37e4995daf93",
          "body": "…(#1660)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `af7bb5c` to `ce6a7ef`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/ce6a7efb479db6a99fe95e\n[…]\nb6dd48cc1bf63b8e\">compare\nview</a></li>\n</ul>\n</details>\n<br />\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `af7bb5c` to `ce6a7ef` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T06:55:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b4754a9fcee334c6a4a91b116b9da0fb4c9ac59",
          "body": "Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.8 to\n2.1.9.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/evilmartians/lefthook/releases\">lefthook's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v2.1.9</h2>\n<h2>Changelog</h2>\n<ul>\n<li>1d35cb\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump lefthook from 2.1.8 to 2.1.9 (#1661)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T06:43:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa98f2c0b902f78f87856d73b70429521b11f4fc",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 🐞 Bugfixes\n* Fix crash when app is killed while paywall is shown with MY_APP\npurchase logic (#1658) via Toni Rico (@tonidero)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.9.1 (#1659)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-28T14:19:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e1ce6f3fc0a783587289f1cb9e92df077ac0aa5",
          "body": "…ase logic (#1658)\n\n## Summary\n\n- When Android kills and restores the process while a paywall with\n`purchaseLogic` is displayed, `PaywallFragment` is recreated from its\nsaved Bundle but `PaywallFragmentNonSerializableArgsStore` (in-memory\nmap) is wiped.\n- The fragment relaunches `PaywallActivity` wi\n[…]\nwall flows (no `purchaseLogic`/`paywallListener`) are\ncompletely unaffected — the flag is only set to `true` when those\nobjects are provided.\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix crash when app is killed while paywall is shown with MY_APP purch…",
          "author_name": "Toni Rico",
          "author_login": "tonidero",
          "committed_at": "2026-05-28T13:29:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "86bda6be8af092f5ea52cdb1c49e0aac61af2398",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.74.0 => 5.75.0 Android 10.6.1 => 10.7.0 JS 1.41.1 =>\n1.41.2 (#1656) via RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane from 2.234.0 to 2.235.0 (#1655) via dependabot[bot]\n(@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.9.0 (#1657)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-28T10:15:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b633d041c9f2512fa90e94154244e7ba7ab141a",
          "body": "…> 1.41.2 (#1656)\n\n[AUTOMATIC] iOS 5.74.0 => 5.75.0 Android 10.6.1 => 10.7.0 JS 1.41.1 =>\n1.41.2",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.74.0 => 5.75.0 Android 10.6.1 => 10.7.0 JS 1.41.1 =…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-28T09:14:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f5464e537b9a4dcd5e5926439ee276090a808a",
          "body": "Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.234.0 to\n2.235.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/fastlane/fastlane/releases\">fastlane's\nreleases</a>.</em></p>\n<blockquote>\n<h2>2.235.0 Improvements</h2>\n<ul>\n<li>[docs] allow de\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane from 2.234.0 to 2.235.0 (#1655)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-27T06:29:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1922e2a2d6cab96e60376abc88149d14e3c73419",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.73.1 => 5.74.0 (#1653) via RevenueCat Git Bot\n(@RCGitBot)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.8.0 (#1654)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-26T09:54:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f03867b70d5776298d42915641a937f1914c2ae0",
          "body": "[AUTOMATIC] iOS 5.73.1 => 5.74.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.73.1 => 5.74.0 (#1653)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-26T09:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f796bf4dadb884df9b8dd8711c0e5885051456a",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.73.0 => 5.73.1 Android 10.6.0 => 10.6.1 JS 1.41.0 =>\n1.41.1 (#1651) via RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* [AUTOMATIC] JS 1.40.0 => 1.41.0 (#1649) via RevenueCat Git Bot\n(@RCGitBot)\n* Bump lefthook from 2.1.6 to 2.1.8 (#1650) via dependabot[bot]\n(@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.7.1 (#1652)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-21T10:06:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff669a5d407ac88d32e717a3da9093e4c784f8bb",
          "body": "…> 1.41.1 (#1651)\n\n[AUTOMATIC] iOS 5.73.0 => 5.73.1 Android 10.6.0 => 10.6.1 JS 1.41.0 =>\n1.41.1",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.73.0 => 5.73.1 Android 10.6.0 => 10.6.1 JS 1.41.0 =…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-21T09:13:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01795713c4a0c6df2416aeccc751ef1ed3108762",
          "body": "[AUTOMATIC] JS 1.40.0 => 1.41.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] JS 1.40.0 => 1.41.0 (#1649)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-20T14:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99be5221adfd52e3b259c064fdc6d5c0218af436",
          "body": "Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.6 to\n2.1.8.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/evilmartians/lefthook/releases\">lefthook's\nreleases</a>.</em></p>\n<blockquote>\n<h2>v2.1.8</h2>\n<h2>Changelog</h2>\n<ul>\n<li>488a5f\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump lefthook from 2.1.6 to 2.1.8 (#1650)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-20T07:30:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7c565f1f678d555efd567e6bde982987df54db27",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.72.0 => 5.73.0 Android 10.5.0 => 10.6.0 JS 1.39.0 =>\n1.40.0 (#1646) via RevenueCat Git Bot (@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane from 2.233.1 to 2.234.0 (#1644) via dependabot[bot]\n(@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.7.0 (#1647)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-14T10:04:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "927abe4e9602b8e465eee006fc5e7c3a9234fe68",
          "body": "…> 1.40.0 (#1646)\n\n[AUTOMATIC] iOS 5.72.0 => 5.73.0 Android 10.5.0 => 10.6.0 JS 1.39.0 =>\n1.40.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.72.0 => 5.73.0 Android 10.5.0 => 10.6.0 JS 1.39.0 =…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-14T09:14:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a82d26269ccde38ed0934a4af6b3a23509fa651",
          "body": "Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.233.1 to\n2.234.0.\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a\nhref=\"https://github.com/fastlane/fastlane/releases\">fastlane's\nreleases</a>.</em></p>\n<blockquote>\n<h2>2.234.0 Improvements</h2>\n<blockquote>\n<p>[!TIP]\nA\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane from 2.233.1 to 2.234.0 (#1644)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-12T07:17:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "39662805cdf626e5eebe6fc8dfc0d50069115a34",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.71.0 => 5.72.0 Android 10.4.0 => 10.5.0 (#1640) via\nRevenueCat Git Bot (@RCGitBot)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.6.0 (#1641)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-08T16:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b98fc2594797fb1f41222a5b2ce51dc6ccee3e4e",
          "body": "[AUTOMATIC] iOS 5.71.0 => 5.72.0 Android 10.4.0 => 10.5.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.71.0 => 5.72.0 Android 10.4.0 => 10.5.0 (#1640)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-08T10:06:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2ffeec5b3b9a20aeefb62291ab7dee83e410ece",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.70.0 => 5.71.0 Android 10.3.1 => 10.4.0 JS 1.38.0 =>\n1.39.0 (#1637) via RevenueCat Git Bot (@RCGitBot)",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.5.0 (#1638)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-07T10:27:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeecc4bbddf403a4ff0222af6eeac56847070a8b",
          "body": "…> 1.39.0 (#1637)\n\n[AUTOMATIC] iOS 5.70.0 => 5.71.0 Android 10.3.1 => 10.4.0 JS 1.38.0 =>\n1.39.0",
          "is_bot": false,
          "headline": "[AUTOMATIC] iOS 5.70.0 => 5.71.0 Android 10.3.1 => 10.4.0 JS 1.38.0 =…",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-07T09:13:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d876cf19a173f381cb76613ac87019b532e3327f",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### ✨ New Features\n* Deprecate PRORATION_MODE and GoogleProductChangeInfo (#1634) via Will\nTaylor (@fire-at-will)\n\n### 🔄 Other Changes\n* Bump fastlane-plugin-revenuecat_internal from `21e02ec` to `af7bb5c`\n(#1633) via dependabot[bot] (@dependabot[bot])\n* Bump fastlane-plugin-revenuecat_internal from `2d11430` to `21e02ec`\n(#1632) via dependabot[bot] (@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.4.0 (#1636)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-06T15:50:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30d3787c89b9dd2969dff838f8e3d763d9981a19",
          "body": null,
          "is_bot": false,
          "headline": "Deprecate PRORATION_MODE and GoogleProductChangeInfo (#1634)",
          "author_name": "Will Taylor",
          "author_login": "fire-at-will",
          "committed_at": "2026-05-06T13:58:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4018adc22bb69b1bdcba1b104635370d869123f4",
          "body": "…(#1633)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `21e02ec` to `af7bb5c`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/af7bb5c1f442d560926d2c\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `21e02ec` to `af7bb5c` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T15:54:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d4e00b7dafc3820c0878cd47677aef0cbb4e3162",
          "body": "…(#1632)\n\nBumps\n[fastlane-plugin-revenuecat_internal](https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal)\nfrom `2d11430` to `21e02ec`.\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a\nhref=\"https://github.com/RevenueCat/fastlane-plugin-revenuecat_internal/commit/21e02ec9e056d0f4cddf74\n[…]\nnless you reopen the\nPR or upgrade to it yourself)\n\n\n</details>\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump fastlane-plugin-revenuecat_internal from `2d11430` to `21e02ec` …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-05T06:50:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ddcd0cc9c39e52709a83a9334c1a2e9026f9ea52",
          "body": "**This is an automatic release.**\n\n## RevenueCat SDK\n### 📦 Dependency Updates\n* [AUTOMATIC] iOS 5.69.0 => 5.70.0 (#1626) via RevenueCat Git Bot\n(@RCGitBot)\n\n### 🔄 Other Changes\n* Bump fastlane-plugin-revenuecat_internal from `d24ab26` to `2d11430`\n(#1628) via dependabot[bot] (@dependabot[bot])",
          "is_bot": false,
          "headline": "[AUTOMATIC] Release/18.3.0 (#1630)",
          "author_name": "RevenueCat Git Bot",
          "author_login": "RCGitBot",
          "committed_at": "2026-05-04T07:54:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 404,
      "latest_release_at": "2026-07-17T17:21:32Z",
      "latest_release_tag": "18.22.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 52,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "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": [
        {
          "name": "@revenuecat/purchases-typescript-internal",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "RevenueCat"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@revenuecat/purchases-typescript-internal",
          "is_deprecated": false,
          "latest_version": "18.22.2",
          "repository_url": "https://github.com/RevenueCat/purchases-hybrid-common",
          "versions_count": 267,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 12,
          "monthly_downloads": 3203475,
          "first_published_at": "2023-08-01T11:03:33.315000Z",
          "latest_published_at": "2026-07-17T16:58:52.224000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@revenuecat/purchases-js-hybrid-mappings",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@revenuecat/purchases-js-hybrid-mappings",
          "is_deprecated": false,
          "latest_version": "18.22.2",
          "repository_url": "https://github.com/RevenueCat/purchases-hybrid-common",
          "versions_count": 150,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 12,
          "monthly_downloads": 2855738,
          "first_published_at": "2025-04-16T07:59:11.631000Z",
          "latest_published_at": "2026-07-17T16:59:21.690000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 25,
      "stars": 36,
      "watchers": 8,
      "fork_history": {
        "days": [
          {
            "date": "2020-05-21",
            "count": 1
          },
          {
            "date": "2021-11-29",
            "count": 1
          },
          {
            "date": "2022-03-24",
            "count": 1
          },
          {
            "date": "2022-04-08",
            "count": 1
          },
          {
            "date": "2022-04-30",
            "count": 1
          },
          {
            "date": "2023-11-05",
            "count": 1
          },
          {
            "date": "2024-02-18",
            "count": 1
          },
          {
            "date": "2024-03-25",
            "count": 1
          },
          {
            "date": "2024-04-17",
            "count": 1
          },
          {
            "date": "2025-02-05",
            "count": 1
          },
          {
            "date": "2025-02-22",
            "count": 1
          },
          {
            "date": "2025-03-03",
            "count": 1
          },
          {
            "date": "2025-04-23",
            "count": 1
          },
          {
            "date": "2025-04-30",
            "count": 1
          },
          {
            "date": "2025-06-10",
            "count": 1
          },
          {
            "date": "2025-07-16",
            "count": 1
          },
          {
            "date": "2025-08-02",
            "count": 1
          },
          {
            "date": "2025-10-10",
            "count": 1
          },
          {
            "date": "2025-11-10",
            "count": 1
          },
          {
            "date": "2026-05-11",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 25,
        "total_forks": 25
      },
      "star_history": null,
      "open_issues_and_prs": 11
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "mise.toml"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "purchases-js-hybrid-mappings/tsconfig.json",
        "typescript/tsconfig.json"
      ],
      "toolchain_manifests": [
        "android/api-tests/build.gradle.kts",
        "android/build.gradle.kts",
        "android/hybridcommon-store-galaxy/build.gradle.kts",
        "android/hybridcommon-ui/build.gradle.kts",
        "android/hybridcommon/build.gradle.kts"
      ],
      "largest_source_bytes": 90397,
      "source_files_sampled": 181,
      "oversized_source_files": 3,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 8205
    },
    "dependencies": {
      "manifests": [
        "Gemfile",
        "android/build.gradle.kts",
        "purchases-js-hybrid-mappings/package.json",
        "typescript/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4c8g-83qw-93j6",
              "GHSA-v2hh-gcrm-f6hx"
            ],
            "fixed_version": "4.1.1",
            "advisory_count": 2,
            "oldest_advisory_days": 1
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "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": 144
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 6
        },
        "advisory_count": 8,
        "affected_count": 6,
        "assessed_count": 654,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "maven",
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "fastlane",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "cocoapods",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 1.17"
        },
        {
          "name": "danger",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "rest-client",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "lefthook",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 2.1"
        },
        {
          "name": "abbrev",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "@revenuecat/purchases-js",
          "manifest": "purchases-js-hybrid-mappings/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.47.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@revenuecat/purchases-js",
            "direct": true,
            "version": "1.47.2",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": true,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods",
            "direct": true,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "danger",
            "direct": true,
            "version": "9.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "fastlane",
            "direct": true,
            "version": "2.237.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "lefthook",
            "direct": true,
            "version": "2.1.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "rest-client",
            "direct": true,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/config-array",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/object-schema",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment-jsdom-abstract",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/pattern",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@microsoft/api-extractor",
            "direct": false,
            "version": "7.58.9",
            "ecosystem": "npm"
          },
          {
            "name": "@microsoft/api-extractor-model",
            "direct": false,
            "version": "7.33.8",
            "ecosystem": "npm"
          },
          {
            "name": "@microsoft/tsdoc",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "@microsoft/tsdoc-config",
            "direct": false,
            "version": "0.18.1",
            "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": "@rollup/plugin-node-resolve",
            "direct": false,
            "version": "15.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-terser",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-typescript",
            "direct": false,
            "version": "11.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rushstack/node-core-library",
            "direct": false,
            "version": "5.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rushstack/problem-matcher",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rushstack/rig-package",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rushstack/terminal",
            "direct": false,
            "version": "0.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rushstack/ts-command-line",
            "direct": false,
            "version": "5.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.10",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.34.49",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "15.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/argparse",
            "direct": false,
            "version": "1.0.38",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/graceful-fs",
            "direct": false,
            "version": "4.1.9",
            "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/jest",
            "direct": false,
            "version": "29.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsdom",
            "direct": false,
            "version": "21.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/resolve",
            "direct": false,
            "version": "1.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/semver",
            "direct": false,
            "version": "7.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/tough-cookie",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.35",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "5.62.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-draft-04",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.40",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "bs-logger",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001799",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.3",
            "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": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "diff-sequences",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.380",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.5",
            "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-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "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": "globals",
            "direct": false,
            "version": "13.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.2",
            "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-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-jsdom",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-get-type",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "30.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jju",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "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": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare-lite",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.50",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.24",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "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-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "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-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.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "30.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is-18",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is-19",
            "direct": false,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.12",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve.exports",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-dts",
            "direct": false,
            "version": "6.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "rrweb-cssom",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "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": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.2",
            "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": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "smob",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "string-argv",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.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": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.48.0",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "6.1.86",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "ts-jest",
            "direct": false,
            "version": "29.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsutils",
            "direct": false,
            "version": "3.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.2.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "addressable",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "algoliasearch",
            "direct": false,
            "version": "1.27.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "artifactory",
            "direct": false,
            "version": "3.0.17",
            "ecosystem": "rubygems"
          },
          {
            "name": "atomos",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-eventstream",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-partitions",
            "direct": false,
            "version": "1.1267.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-sdk-core",
            "direct": false,
            "version": "3.253.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-sdk-kms",
            "direct": false,
            "version": "1.129.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-sdk-s3",
            "direct": false,
            "version": "1.226.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "aws-sigv4",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "babosa",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "benchmark",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "CFPropertyList",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "rubygems"
          },
          {
            "name": "claide",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "claide-plugins",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-core",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-deintegrate",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-downloader",
            "direct": false,
            "version": "2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-plugins",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-search",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-trunk",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "cocoapods-try",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "colored",
            "direct": false,
            "version": "1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "colored2",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "connection_pool",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "cork",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "declarative",
            "direct": false,
            "version": "0.0.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "digest-crc",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "domain_name",
            "direct": false,
            "version": "0.6.20240107",
            "ecosystem": "rubygems"
          },
          {
            "name": "dotenv",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "emoji_regex",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "ethon",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "excon",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday",
            "direct": false,
            "version": "1.10.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-cookie_jar",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-em_http",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-em_synchrony",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-excon",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-http-cache",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-httpclient",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-multipart",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-net_http",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-net_http_persistent",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-patron",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-rack",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-retry",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday_middleware",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "fastimage",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "fastlane-plugin-versioning_android",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "fastlane-sirp",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": "1.17.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "fourflusher",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "fuzzy_match",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "gh_inspector",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "git",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-apis-androidpublisher_v3",
            "direct": false,
            "version": "0.104.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-apis-core",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-apis-iamcredentials_v1",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-apis-playcustomapp_v1",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-apis-storage_v1",
            "direct": false,
            "version": "0.64.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-cloud-core",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-cloud-env",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-cloud-errors",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-cloud-storage",
            "direct": false,
            "version": "1.62.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "google-logging-utils",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "googleauth",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "http-accept",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "http-cookie",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "rubygems"
          },
          {
            "name": "httpclient",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.15.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "jmespath",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "kramdown",
            "direct": false,
            "version": "2.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "kramdown-parser-gfm",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types-data",
            "direct": false,
            "version": "3.2026.0701",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_magick",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "5.27.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "molinillo",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "multi_json",
            "direct": false,
            "version": "1.21.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "multipart-post",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "nanaimo",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "nap",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "naturally",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "netrc",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "nkf",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.19.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "octokit",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "open4",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "optparse",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "os",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "plist",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "process_executer",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "pstore",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "public_suffix",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rchardet",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "representable",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "retriable",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rexml",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "rouge",
            "direct": false,
            "version": "3.28.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby-macho",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby2_keywords",
            "direct": false,
            "version": "0.0.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rubyzip",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "sawyer",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "securerandom",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "security",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "signet",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simctl",
            "direct": false,
            "version": "1.6.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "terminal-notifier",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "terminal-table",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "track_open_instances",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "rubygems"
          },
          {
            "name": "trailblazer-option",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "tty-cursor",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "tty-screen",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "tty-spinner",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "typhoeus",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "uber",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "unicode-display_width",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "word_wrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "xcodeproj",
            "direct": false,
            "version": "1.28.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "xcpretty",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "xcpretty-travis-formatter",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 654,
        "direct_count": 7,
        "indirect_count": 647
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 11,
        "merged_prs": 1333,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 16,
        "closed_unmerged_prs": 399
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "RCGitBot",
          "commits": 541,
          "avatar_url": "https://avatars.githubusercontent.com/u/72824662?v=4"
        },
        {
          "type": "User",
          "login": "vegaro",
          "commits": 147,
          "avatar_url": "https://avatars.githubusercontent.com/u/664544?v=4"
        },
        {
          "type": "User",
          "login": "tonidero",
          "commits": 100,
          "avatar_url": "https://avatars.githubusercontent.com/u/808417?v=4"
        },
        {
          "type": "User",
          "login": "aboedo",
          "commits": 96,
          "avatar_url": "https://avatars.githubusercontent.com/u/3922667?v=4"
        },
        {
          "type": "User",
          "login": "NachoSoto",
          "commits": 59,
          "avatar_url": "https://avatars.githubusercontent.com/u/685609?v=4"
        },
        {
          "type": "User",
          "login": "fire-at-will",
          "commits": 27,
          "avatar_url": "https://avatars.githubusercontent.com/u/7330140?v=4"
        },
        {
          "type": "User",
          "login": "facumenzella",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/1125252?v=4"
        },
        {
          "type": "User",
          "login": "ajpallares",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/13433037?v=4"
        },
        {
          "type": "User",
          "login": "JayShortway",
          "commits": 17,
          "avatar_url": "https://avatars.githubusercontent.com/u/29483617?v=4"
        },
        {
          "type": "User",
          "login": "rickvdl",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/6663039?v=4"
        }
      ],
      "contributors_sampled": 22,
      "top_contributor_share": 0.495
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-merge-dependencies.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.cjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock",
        "yarn.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "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": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 13 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 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": null,
            "reason": "no dependencies found",
            "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": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 9,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 4,
            "reason": "6 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "b9d7bc1b5979b86b99b3a096ddd4d658c821982d",
        "ran_at": "2026-07-23T00:34:42Z",
        "aggregate_score": 6.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T15:32:23Z",
      "oldest_open_prs": [
        {
          "number": 1429,
          "created_at": "2026-01-18T00:23:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1468,
          "created_at": "2026-02-06T18:10:35Z",
          "last_comment_at": "2026-02-06T18:12:42Z",
          "last_comment_author": "RevenueCat-Danger-Bot"
        },
        {
          "number": 1581,
          "created_at": "2026-03-25T10:50:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1629,
          "created_at": "2026-05-03T00:34:59Z",
          "last_comment_at": "2026-06-21T00:47:30Z",
          "last_comment_author": "RCGitBot"
        },
        {
          "number": 1635,
          "created_at": "2026-05-06T00:24:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1642,
          "created_at": "2026-05-11T03:37:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1705,
          "created_at": "2026-06-24T15:55:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1717,
          "created_at": "2026-06-29T12:10:33Z",
          "last_comment_at": "2026-06-29T12:10:35Z",
          "last_comment_author": "peterporfy"
        },
        {
          "number": 1718,
          "created_at": "2026-06-29T13:25:01Z",
          "last_comment_at": "2026-06-29T13:25:02Z",
          "last_comment_author": "peterporfy"
        },
        {
          "number": 1761,
          "created_at": "2026-07-20T09:04:31Z",
          "last_comment_at": "2026-07-20T09:13:49Z",
          "last_comment_author": "ajpallares"
        },
        {
          "number": 1763,
          "created_at": "2026-07-22T09:20:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-22T09:19:03Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/RevenueCat/purchases-hybrid-common",
    "host": "github.com",
    "name": "purchases-hybrid-common",
    "owner": "RevenueCat"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 77,
      "inputs": {
        "security": 75,
        "vitality": 100,
        "community": 61,
        "governance": 80,
        "engineering": 66
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 100,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "commits_last_year": 404,
              "human_commit_share": 0.8,
              "days_since_last_push": 0,
              "active_weeks_last_year": 52
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "52/52 weeks with commits",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 52
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "404 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 404
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 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": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "18.22.2",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 61,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 41,
            "inputs": {
              "forks": 25,
              "stars": 36,
              "watchers": 8,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "36 stars",
                "points": 25,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "25 forks",
                "points": 11.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "8 watchers",
                "points": 4.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "packages": [
                "@revenuecat/purchases-typescript-internal",
                "@revenuecat/purchases-js-hybrid-mappings"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 6059213
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "6,059,213 downloads/month across npm",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 6059213,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 80,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 22,
              "top_contributor_share": 0.495
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 50% of commits",
                "points": 11.4,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 50
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "22 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 22
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 13 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 91,
            "inputs": {
              "merged_prs": 1333,
              "open_issues": 0,
              "closed_issues": 16,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 399
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1333/1732 decided PRs merged",
                "points": 29.4,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1333,
                      "decided": 1732
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "followers": 986,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "RevenueCat",
              "public_repos": 74,
              "account_age_days": 3194
            },
            "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": "986 followers of RevenueCat",
                "points": 21.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 986,
                      "login": "RevenueCat"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "74 public repos, account ~8 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 74
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@revenuecat/purchases-typescript-internal",
                "@revenuecat/purchases-js-hybrid-mappings"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "267 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 267
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 66,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": ".eslintrc.cjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.cjs"
                    }
                  }
                ],
                "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": 0,
                "status": "missed",
                "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": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "good",
        "name": "Security",
        "value": 75,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Pinned-Dependencies, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 6.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "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.8,
                "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": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 13 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "6 existing vulnerabilities detected",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "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 654 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": 654
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 8,
              "affected_packages": 6,
              "assessed_packages": 654,
              "unassessed_packages": 0,
              "affected_by_severity": "high 6",
              "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": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 654,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 15
            },
            "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": "excellent",
        "name": "AI Readiness",
        "value": 95,
        "weight": 0,
        "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": 8205
            },
            "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": "80 of 80 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 80,
                      "sampled": 80
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "mise.toml"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "purchases-js-hybrid-mappings/tsconfig.json",
                "typescript/tsconfig.json"
              ],
              "agent_commit_share": 0.11,
              "toolchain_manifests": [
                "android/api-tests/build.gradle.kts",
                "android/build.gradle.kts",
                "android/hybridcommon-store-galaxy/build.gradle.kts",
                "android/hybridcommon-ui/build.gradle.kts",
                "android/hybridcommon/build.gradle.kts"
              ],
              "dependency_bot_commit_share": 0.2
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "mise.toml",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "mise.toml"
                    }
                  }
                ],
                "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": ".eslintrc.cjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.cjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "purchases-js-hybrid-mappings/tsconfig.json, typescript/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "purchases-js-hybrid-mappings/tsconfig.json, typescript/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": "20 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 20,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "Kotlin",
              "largest_source_bytes": 90397,
              "source_files_sampled": 181,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Kotlin (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Kotlin"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/181 source files over 60KB",
                "points": 54.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 181,
                      "oversized": 3
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "deps.dev does not index npm:@revenuecat/purchases-typescript-internal@18.22.2; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T00:35:08.711618Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/RevenueCat/purchases-hybrid-common.svg",
  "full_name": "RevenueCat/purchases-hybrid-common",
  "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 v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

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