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