with\nthe `/m` flag (added for block comments), so `.` matched newlines and a\nsingle `--` comment consumed the rest of the statement, hiding a real\n`LIMIT` that followed it. The command then appended a second `LIMIT`,\nproducing invalid SQL. The line-comment pattern now stops at the newline.", "is_bot": false, "headline": "Strip only the commented line when detecting a LIMIT in rails query", "author_name": "Kenta Ishizaki", "author_login": "55728", "committed_at": "2026-07-12T13:14:00Z", "body_truncated": false, "is_coding_agent": false }, { "oid": "109b3c4c58fb1514718e1190810e3971153596e7", "body": "…ime-inputs\n\nAccept `Date` and numeric inputs in `relative_time_in_words`", "is_bot": false, "headline": "Merge pull request #58092 from 55728/fix-relative-time-in-words-non-t…", "author_name": "fatkodima", "author_login": "fatkodima", "committed_at": "2026-07-12T12:10:39Z", "body_truncated": false, "is_coding_agent": false }, { "oid": "b0955ca345dc18315668a0647f254ccc8f95e976", "body": "Passing a Date or a Numeric raised ArgumentError instead of returning a\ndistance string, unlike distance_of_time_in_words which accepts them.", "is_bot": false, "headline": "Accept Date and numeric inputs in relative_time_in_words", "author_name": "Kenta Ishizaki", "author_login": "55728", "committed_at": "2026-07-12T12:02:17Z", "body_truncated": false, "is_coding_agent": false }, { "oid": "d30eb2413cc0f785a7be21775e495b7ab1f58c90", "body": "…-if-not-exists\n\nHonor `if_not_exists:` in SQLite3 `add_check_constraint` and `add_foreign_key`", "is_bot": false, "headline": "Merge pull request #58091 from 55728/fix-sqlite3-add-check-constraint…", "author_name": "fatkodima", "author_login": "fatkodima", "committed_at": "2026-07-12T11:53:18Z", "body_truncated": false, "is_coding_agent": false }, { "oid": "b1a33e9d2a78f077e4af1069d3ab555a7a03e066", "body": "add_check_constraint and add_foreign_key accept if_not_exists: true to make\nadding a constraint or foreign key that already exists a no-op instead of an\nerror. The abstract adapter (used by MySQL and Trilogy) and the SQLite3\nremove_check_constraint and remove_foreign_key overrides all honor their\nex\n[…]\n:, so the option fell into **options\nunused and a duplicate was added.\n\nThey now return early when the constraint or foreign key already exists,\nmatching the abstract adapter and the remove overrides.", "is_bot": false, "headline": "Honor if_not_exists in SQLite3 add_check_constraint and add_foreign_key", "author_name": "Kenta Ishizaki", "author_login": "55728", "committed_at": "2026-07-12T10:17:59Z", "body_truncated": true, "is_coding_agent": false }, { "oid": "450c547ef823bbe948afbccd58fd887c349b48e3", "body": "Decouple schema loading from the versions formatter", "is_bot": false, "headline": "Merge pull request #58093 from rails/fxn/ruby-schema-load", "author_name": "Xavier Noria", "author_login": "fxn", "committed_at": "2026-07-12T09:42:37Z", "body_truncated": false, "is_coding_agent": false } ], "releases_count": 100, "commits_last_year": 3266, "latest_release_at": "2026-03-24T20:26:02Z", "latest_release_tag": "v8.1.3", "releases_from_tags": false, "days_since_last_push": 0, "active_weeks_last_year": 52, "days_since_latest_release": 119, "mean_days_between_releases": 16.3 }, "community": { "has_readme": true, "has_license": true, "has_description": true, "has_contributing": true, "health_percentage": 87, "has_issue_template": false, "has_code_of_conduct": true, "has_pull_request_template": true }, "ecosystem": { "packages": [ { "name": "rails", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "rubygems", "matches_repo": true, "registry_url": "https://rubygems.org/gems/rails", "is_deprecated": false, "latest_version": "8.1.3", "repository_url": "https://github.com/rails/rails/tree/v8.1.3", "versions_count": 516, "total_downloads": 766141815, "dependents_count": null, "deprecation_note": null, "maintainers_count": null, "monthly_downloads": null, "first_published_at": "2009-07-25T18:01:56Z", "latest_published_at": "2026-03-24T20:27:42.098000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "@rails/actiontext", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "npm", "matches_repo": true, "registry_url": "https://www.npmjs.com/package/@rails/actiontext", "is_deprecated": false, "latest_version": "8.1.300", "repository_url": "https://github.com/rails/rails", "versions_count": 151, "total_downloads": null, "dependents_count": null, "deprecation_note": null, "maintainers_count": 8, "monthly_downloads": 1611030, "first_published_at": "2019-01-10T15:27:54.243000Z", "latest_published_at": "2026-03-24T20:27:36.704000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "@rails/actioncable", "exists": true, "license": "MIT", "keywords": [ "websockets", "actioncable", "rails" ], "ecosystem": "npm", "matches_repo": true, "registry_url": "https://www.npmjs.com/package/@rails/actioncable", "is_deprecated": false, "latest_version": "8.1.300", "repository_url": "https://github.com/rails/rails", "versions_count": 151, "total_downloads": null, "dependents_count": null, "deprecation_note": null, "maintainers_count": 8, "monthly_downloads": 7107601, "first_published_at": "2019-01-10T15:31:50.177000Z", "latest_published_at": "2026-03-24T20:27:20.911000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "railties", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "rubygems", "matches_repo": true, "registry_url": "https://rubygems.org/gems/railties", "is_deprecated": false, "latest_version": "8.1.3", "repository_url": "https://github.com/rails/rails/tree/v8.1.3/railties", "versions_count": 452, "total_downloads": 763536375, "dependents_count": null, "deprecation_note": null, "maintainers_count": null, "monthly_downloads": null, "first_published_at": "2010-02-05T03:02:06.511000Z", "latest_published_at": "2026-03-24T20:27:39.394000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "@rails/activestorage", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "npm", "matches_repo": true, "registry_url": "https://www.npmjs.com/package/@rails/activestorage", "is_deprecated": false, "latest_version": "8.1.300", "repository_url": "https://github.com/rails/rails", "versions_count": 151, "total_downloads": null, "dependents_count": null, "deprecation_note": null, "maintainers_count": 8, "monthly_downloads": 3915592, "first_published_at": "2019-01-10T15:34:04.565000Z", "latest_published_at": "2026-03-24T20:27:26.803000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "activejob", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "rubygems", "matches_repo": true, "registry_url": "https://rubygems.org/gems/activejob", "is_deprecated": false, "latest_version": "8.1.3", "repository_url": "https://github.com/rails/rails/tree/v8.1.3/activejob", "versions_count": 266, "total_downloads": 682910108, "dependents_count": null, "deprecation_note": null, "maintainers_count": null, "monthly_downloads": null, "first_published_at": "2014-05-20T18:10:32.961000Z", "latest_published_at": "2026-03-24T20:27:09.681000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "actionpack", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "rubygems", "matches_repo": true, "registry_url": "https://rubygems.org/gems/actionpack", "is_deprecated": false, "latest_version": "8.1.3", "repository_url": "https://github.com/rails/rails/tree/v8.1.3/actionpack", "versions_count": 515, "total_downloads": 801507633, "dependents_count": null, "deprecation_note": null, "maintainers_count": null, "monthly_downloads": null, "first_published_at": "2009-07-25T18:36:20Z", "latest_published_at": "2026-03-24T20:27:06.634000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 }, { "name": "actiontext", "exists": true, "license": "MIT", "keywords": [], "ecosystem": "rubygems", "matches_repo": true, "registry_url": "https://rubygems.org/gems/actiontext", "is_deprecated": false, "latest_version": "8.1.3", "repository_url": "https://github.com/rails/rails/tree/v8.1.3/actiontext", "versions_count": 150, "total_downloads": 424155745, "dependents_count": null, "deprecation_note": null, "maintainers_count": null, "monthly_downloads": null, "first_published_at": "2019-01-18T21:23:18.544000Z", "latest_published_at": "2026-03-24T20:27:32.815000Z", "latest_version_yanked": null, "days_since_latest_publish": 119 } ] }, "popularity": { "forks": 22363, "stars": 58641, "watchers": 2334, "fork_history": { "days": [ { "date": "2025-06-14", "count": 2 }, { "date": "2025-06-15", "count": 1 }, { "date": "2025-06-16", "count": 1 }, { "date": "2025-06-17", "count": 3 }, { "date": "2025-06-20", "count": 1 }, { "date": "2025-06-22", "count": 1 }, { "date": "2025-06-23", "count": 2 }, { "date": "2025-06-24", "count": 1 }, { "date": "2025-06-26", "count": 1 }, { "date": "2025-06-27", "count": 1 }, { "date": "2025-06-29", "count": 1 }, { "date": "2025-07-01", "count": 3 }, { "date": "2025-07-02", "count": 2 }, { "date": "2025-07-03", "count": 3 }, { "date": "2025-07-05", "count": 1 }, { "date": "2025-07-06", "count": 2 }, { "date": "2025-07-07", "count": 2 }, { "date": "2025-07-08", "count": 2 }, { "date": "2025-07-09", "count": 3 }, { "date": "2025-07-10", "count": 4 }, { "date": "2025-07-11", "count": 2 }, { "date": "2025-07-12", "count": 1 }, { "date": "2025-07-14", "count": 3 }, { "date": "2025-07-15", "count": 3 }, { "date": "2025-07-16", "count": 2 }, { "date": "2025-07-17", "count": 5 }, { "date": "2025-07-18", "count": 6 }, { "date": "2025-07-19", "count": 2 }, { "date": "2025-07-20", "count": 2 }, { "date": "2025-07-21", "count": 5 }, { "date": "2025-07-22", "count": 3 }, { "date": "2025-07-23", "count": 2 }, { "date": "2025-07-24", "count": 2 }, { "date": "2025-07-25", "count": 1 }, { "date": "2025-07-26", "count": 5 }, { "date": "2025-07-27", "count": 1 }, { "date": "2025-07-28", "count": 1 }, { "date": "2025-07-29", "count": 2 }, { "date": "2025-07-30", "count": 1 }, { "date": "2025-07-31", "count": 2 }, { "date": "2025-08-01", "count": 1 }, { "date": "2025-08-02", "count": 1 }, { "date": "2025-08-03", "count": 4 }, { "date": "2025-08-04", "count": 1 }, { "date": "2025-08-05", "count": 3 }, { "date": "2025-08-06", "count": 1 }, { "date": "2025-08-07", "count": 1 }, { "date": "2025-08-08", "count": 4 }, { "date": "2025-08-09", "count": 2 }, { "date": "2025-08-12", "count": 2 }, { "date": "2025-08-13", "count": 2 }, { "date": "2025-08-14", "count": 4 }, { "date": "2025-08-17", "count": 3 }, { "date": "2025-08-18", "count": 3 }, { "date": "2025-08-19", "count": 3 }, { "date": "2025-08-20", "count": 3 }, { "date": "2025-08-21", "count": 2 }, { "date": "2025-08-22", "count": 1 }, { "date": "2025-08-23", "count": 4 }, { "date": "2025-08-25", "count": 4 }, { "date": "2025-08-26", "count": 3 }, { "date": "2025-08-27", "count": 2 }, { "date": "2025-08-28", "count": 3 }, { "date": "2025-08-30", "count": 2 }, { "date": "2025-09-01", "count": 2 }, { "date": "2025-09-02", "count": 1 }, { "date": "2025-09-03", "count": 1 }, { "date": "2025-09-04", "count": 5 }, { "date": "2025-09-05", "count": 5 }, { "date": "2025-09-06", "count": 4 }, { "date": "2025-09-07", "count": 2 }, { "date": "2025-09-08", "count": 1 }, { "date": "2025-09-09", "count": 4 }, { "date": "2025-09-10", "count": 1 }, { "date": "2025-09-12", "count": 2 }, { "date": "2025-09-14", "count": 1 }, { "date": "2025-09-15", "count": 4 }, { "date": "2025-09-16", "count": 1 }, { "date": "2025-09-17", "count": 2 }, { "date": "2025-09-18", "count": 1 }, { "date": "2025-09-19", "count": 1 }, { "date": "2025-09-20", "count": 2 }, { "date": "2025-09-21", "count": 3 }, { "date": "2025-09-22", "count": 3 }, { "date": "2025-09-23", "count": 1 }, { "date": "2025-09-24", "count": 4 }, { "date": "2025-09-25", "count": 9 }, { "date": "2025-09-26", "count": 2 }, { "date": "2025-09-27", "count": 3 }, { "date": "2025-09-29", "count": 4 }, { "date": "2025-10-01", "count": 1 }, { "date": "2025-10-02", "count": 2 }, { "date": "2025-10-03", "count": 1 }, { "date": "2025-10-04", "count": 2 }, { "date": "2025-10-05", "count": 2 }, { "date": "2025-10-06", "count": 1 }, { "date": "2025-10-07", "count": 2 }, { "date": "2025-10-08", "count": 3 }, { "date": "2025-10-10", "count": 2 }, { "date": "2025-10-15", "count": 3 }, { "date": "2025-10-16", "count": 2 }, { "date": "2025-10-17", "count": 4 }, { "date": "2025-10-18", "count": 5 }, { "date": "2025-10-19", "count": 1 }, { "date": "2025-10-20", "count": 2 }, { "date": "2025-10-21", "count": 2 }, { "date": "2025-10-22", "count": 3 }, { "date": "2025-10-23", "count": 5 }, { "date": "2025-10-24", "count": 4 }, { "date": "2025-10-26", "count": 1 }, { "date": "2025-10-28", "count": 1 }, { "date": "2025-10-29", "count": 2 }, { "date": "2025-10-30", "count": 1 }, { "date": "2025-10-31", "count": 2 }, { "date": "2025-11-01", "count": 4 }, { "date": "2025-11-02", "count": 3 }, { "date": "2025-11-03", "count": 4 }, { "date": "2025-11-05", "count": 3 }, { "date": "2025-11-06", "count": 1 }, { "date": "2025-11-07", "count": 2 }, { "date": "2025-11-08", "count": 2 }, { "date": "2025-11-09", "count": 2 }, { "date": "2025-11-10", "count": 1 }, { "date": "2025-11-11", "count": 4 }, { "date": "2025-11-12", "count": 1 }, { "date": "2025-11-13", "count": 3 }, { "date": "2025-11-14", "count": 2 }, { "date": "2025-11-15", "count": 4 }, { "date": "2025-11-16", "count": 3 }, { "date": "2025-11-17", "count": 3 }, { "date": "2025-11-18", "count": 4 }, { "date": "2025-11-20", "count": 2 }, { "date": "2025-11-21", "count": 3 }, { "date": "2025-11-22", "count": 1 }, { "date": "2025-11-23", "count": 2 }, { "date": "2025-11-24", "count": 2 }, { "date": "2025-11-25", "count": 1 }, { "date": "2025-11-26", "count": 1 }, { "date": "2025-11-27", "count": 2 }, { "date": "2025-11-28", "count": 1 }, { "date": "2025-11-29", "count": 4 }, { "date": "2025-11-30", "count": 3 }, { "date": "2025-12-02", "count": 2 }, { "date": "2025-12-03", "count": 2 }, { "date": "2025-12-04", "count": 2 }, { "date": "2025-12-05", "count": 2 }, { "date": "2025-12-06", "count": 1 }, { "date": "2025-12-07", "count": 2 }, { "date": "2025-12-08", "count": 1 }, { "date": "2025-12-11", "count": 3 }, { "date": "2025-12-13", "count": 2 }, { "date": "2025-12-15", "count": 3 }, { "date": "2025-12-16", "count": 3 }, { "date": "2025-12-17", "count": 1 }, { "date": "2025-12-18", "count": 3 }, { "date": "2025-12-19", "count": 3 }, { "date": "2025-12-20", "count": 3 }, { "date": "2025-12-21", "count": 2 }, { "date": "2025-12-22", "count": 2 }, { "date": "2025-12-23", "count": 3 }, { "date": "2025-12-24", "count": 2 }, { "date": "2025-12-25", "count": 2 }, { "date": "2025-12-26", "count": 2 }, { "date": "2025-12-27", "count": 1 }, { "date": "2025-12-28", "count": 1 }, { "date": "2025-12-29", "count": 3 }, { "date": "2025-12-31", "count": 3 }, { "date": "2026-01-01", "count": 2 }, { "date": "2026-01-02", "count": 2 }, { "date": "2026-01-05", "count": 2 }, { "date": "2026-01-06", "count": 2 }, { "date": "2026-01-07", "count": 2 }, { "date": "2026-01-08", "count": 4 }, { "date": "2026-01-09", "count": 2 }, { "date": "2026-01-10", "count": 2 }, { "date": "2026-01-11", "count": 2 }, { "date": "2026-01-12", "count": 7 }, { "date": "2026-01-13", "count": 6 }, { "date": "2026-01-14", "count": 4 }, { "date": "2026-01-15", "count": 1 }, { "date": "2026-01-16", "count": 3 }, { "date": "2026-01-18", "count": 1 }, { "date": "2026-01-20", "count": 4 }, { "date": "2026-01-21", "count": 1 }, { "date": "2026-01-22", "count": 2 }, { "date": "2026-01-23", "count": 3 }, { "date": "2026-01-25", "count": 2 }, { "date": "2026-01-26", "count": 1 }, { "date": "2026-01-27", "count": 2 }, { "date": "2026-01-30", "count": 3 }, { "date": "2026-01-31", "count": 3 }, { "date": "2026-02-01", "count": 1 }, { "date": "2026-02-02", "count": 6 }, { "date": "2026-02-03", "count": 2 }, { "date": "2026-02-04", "count": 2 }, { "date": "2026-02-05", "count": 4 }, { "date": "2026-02-06", "count": 3 }, { "date": "2026-02-07", "count": 3 }, { "date": "2026-02-08", "count": 2 }, { "date": "2026-02-09", "count": 1 }, { "date": "2026-02-10", "count": 2 }, { "date": "2026-02-11", "count": 1 }, { "date": "2026-02-12", "count": 2 }, { "date": "2026-02-13", "count": 1 }, { "date": "2026-02-14", "count": 1 }, { "date": "2026-02-15", "count": 3 }, { "date": "2026-02-16", "count": 1 }, { "date": "2026-02-17", "count": 2 }, { "date": "2026-02-18", "count": 3 }, { "date": "2026-02-19", "count": 3 }, { "date": "2026-02-20", "count": 2 }, { "date": "2026-02-22", "count": 1 }, { "date": "2026-02-23", "count": 1 }, { "date": "2026-02-24", "count": 3 }, { "date": "2026-02-25", "count": 2 }, { "date": "2026-02-26", "count": 5 }, { "date": "2026-02-28", "count": 1 }, { "date": "2026-03-02", "count": 1 }, { "date": "2026-03-03", "count": 1 }, { "date": "2026-03-04", "count": 1 }, { "date": "2026-03-05", "count": 1 }, { "date": "2026-03-06", "count": 2 }, { "date": "2026-03-07", "count": 2 }, { "date": "2026-03-08", "count": 1 }, { "date": "2026-03-09", "count": 1 }, { "date": "2026-03-10", "count": 2 }, { "date": "2026-03-11", "count": 6 }, { "date": "2026-03-12", "count": 4 }, { "date": "2026-03-13", "count": 1 }, { "date": "2026-03-14", "count": 1 }, { "date": "2026-03-15", "count": 2 }, { "date": "2026-03-16", "count": 2 }, { "date": "2026-03-17", "count": 4 }, { "date": "2026-03-18", "count": 1 }, { "date": "2026-03-19", "count": 3 }, { "date": "2026-03-21", "count": 3 }, { "date": "2026-03-22", "count": 2 }, { "date": "2026-03-23", "count": 2 }, { "date": "2026-03-24", "count": 1 }, { "date": "2026-03-25", "count": 5 }, { "date": "2026-03-26", "count": 3 }, { "date": "2026-03-27", "count": 2 }, { "date": "2026-03-29", "count": 1 }, { "date": "2026-03-30", "count": 1 }, { "date": "2026-03-31", "count": 3 }, { "date": "2026-04-01", "count": 2 }, { "date": "2026-04-02", "count": 2 }, { "date": "2026-04-03", "count": 3 }, { "date": "2026-04-04", "count": 4 }, { "date": "2026-04-06", "count": 1 }, { "date": "2026-04-07", "count": 4 }, { "date": "2026-04-08", "count": 1 }, { "date": "2026-04-09", "count": 1 }, { "date": "2026-04-11", "count": 3 }, { "date": "2026-04-13", "count": 4 }, { "date": "2026-04-14", "count": 1 }, { "date": "2026-04-15", "count": 1 }, { "date": "2026-04-16", "count": 2 }, { "date": "2026-04-17", "count": 2 }, { "date": "2026-04-18", "count": 1 }, { "date": "2026-04-19", "count": 3 }, { "date": "2026-04-22", "count": 3 }, { "date": "2026-04-23", "count": 4 }, { "date": "2026-04-24", "count": 3 }, { "date": "2026-04-25", "count": 4 }, { "date": "2026-04-27", "count": 5 }, { "date": "2026-04-28", "count": 1 }, { "date": "2026-04-29", "count": 4 }, { "date": "2026-04-30", "count": 1 }, { "date": "2026-05-01", "count": 1 }, { "date": "2026-05-03", "count": 2 }, { "date": "2026-05-04", "count": 3 }, { "date": "2026-05-05", "count": 1 }, { "date": "2026-05-06", "count": 4 }, { "date": "2026-05-07", "count": 2 }, { "date": "2026-05-08", "count": 3 }, { "date": "2026-05-09", "count": 2 }, { "date": "2026-05-10", "count": 3 }, { "date": "2026-05-11", "count": 5 }, { "date": "2026-05-13", "count": 3 }, { "date": "2026-05-14", "count": 2 }, { "date": "2026-05-18", "count": 3 }, { "date": "2026-05-20", "count": 3 }, { "date": "2026-05-21", "count": 3 }, { "date": "2026-05-22", "count": 1 }, { "date": "2026-05-23", "count": 3 }, { "date": "2026-05-26", "count": 1 }, { "date": "2026-05-27", "count": 3 }, { "date": "2026-05-28", "count": 4 }, { "date": "2026-05-29", "count": 2 }, { "date": "2026-05-30", "count": 3 }, { "date": "2026-05-31", "count": 1 }, { "date": "2026-06-01", "count": 1 }, { "date": "2026-06-03", "count": 1 }, { "date": "2026-06-05", "count": 3 }, { "date": "2026-06-06", "count": 2 }, { "date": "2026-06-07", "count": 2 }, { "date": "2026-06-08", "count": 1 }, { "date": "2026-06-09", "count": 1 }, { "date": "2026-06-10", "count": 2 }, { "date": "2026-06-11", "count": 3 }, { "date": "2026-06-12", "count": 1 }, { "date": "2026-06-13", "count": 2 }, { "date": "2026-06-14", "count": 2 }, { "date": "2026-06-15", "count": 4 }, { "date": "2026-06-16", "count": 1 }, { "date": "2026-06-17", "count": 1 }, { "date": "2026-06-19", "count": 3 }, { "date": "2026-06-21", "count": 1 }, { "date": "2026-06-22", "count": 1 }, { "date": "2026-06-23", "count": 2 }, { "date": "2026-06-24", "count": 3 }, { "date": "2026-06-26", "count": 1 }, { "date": "2026-06-27", "count": 2 }, { "date": "2026-06-28", "count": 3 }, { "date": "2026-06-29", "count": 2 }, { "date": "2026-06-30", "count": 24 }, { "date": "2026-07-01", "count": 10 }, { "date": "2026-07-02", "count": 11 }, { "date": "2026-07-03", "count": 12 }, { "date": "2026-07-04", "count": 22 }, { "date": "2026-07-05", "count": 15 }, { "date": "2026-07-06", "count": 6 }, { "date": "2026-07-07", "count": 12 }, { "date": "2026-07-08", "count": 4 }, { "date": "2026-07-09", "count": 11 }, { "date": "2026-07-10", "count": 33 }, { "date": "2026-07-11", "count": 20 }, { "date": "2026-07-12", "count": 5 }, { "date": "2026-07-13", "count": 9 }, { "date": "2026-07-14", "count": 8 }, { "date": "2026-07-15", "count": 5 }, { "date": "2026-07-16", "count": 2 }, { "date": "2026-07-17", "count": 3 }, { "date": "2026-07-18", "count": 17 }, { "date": "2026-07-19", "count": 7 }, { "date": "2026-07-20", "count": 8 }, { "date": "2026-07-21", "count": 21 } ], "complete": false, "collected": 1000, "total_forks": 22363 }, "star_history": { "days": [ { "date": "2025-12-23", "count": 5 }, { "date": "2025-12-24", "count": 2 }, { "date": "2025-12-25", "count": 3 }, { "date": "2025-12-26", "count": 5 }, { "date": "2025-12-27", "count": 4 }, { "date": "2025-12-28", "count": 5 }, { "date": "2025-12-29", "count": 7 }, { "date": "2025-12-30", "count": 6 }, { "date": "2025-12-31", "count": 5 }, { "date": "2026-01-01", "count": 4 }, { "date": "2026-01-02", "count": 5 }, { "date": "2026-01-03", "count": 3 }, { "date": "2026-01-04", "count": 4 }, { "date": "2026-01-05", "count": 8 }, { "date": "2026-01-06", "count": 14 }, { "date": "2026-01-07", "count": 5 }, { "date": "2026-01-08", "count": 10 }, { "date": "2026-01-09", "count": 5 }, { "date": "2026-01-10", "count": 1 }, { "date": "2026-01-11", "count": 5 }, { "date": "2026-01-12", "count": 3 }, { "date": "2026-01-13", "count": 5 }, { "date": "2026-01-14", "count": 5 }, { "date": "2026-01-15", "count": 3 }, { "date": "2026-01-16", "count": 5 }, { "date": "2026-01-17", "count": 3 }, { "date": "2026-01-18", "count": 6 }, { "date": "2026-01-19", "count": 7 }, { "date": "2026-01-20", "count": 4 }, { "date": "2026-01-21", "count": 2 }, { "date": "2026-01-22", "count": 5 }, { "date": "2026-01-23", "count": 3 }, { "date": "2026-01-24", "count": 4 }, { "date": "2026-01-25", "count": 3 }, { "date": "2026-01-26", "count": 5 }, { "date": "2026-01-27", "count": 6 }, { "date": "2026-01-28", "count": 5 }, { "date": "2026-01-29", "count": 6 }, { "date": "2026-01-30", "count": 4 }, { "date": "2026-01-31", "count": 5 }, { "date": "2026-02-01", "count": 4 }, { "date": "2026-02-02", "count": 4 }, { "date": "2026-02-03", "count": 6 }, { "date": "2026-02-04", "count": 5 }, { "date": "2026-02-05", "count": 3 }, { "date": "2026-02-06", "count": 1 }, { "date": "2026-02-07", "count": 7 }, { "date": "2026-02-08", "count": 7 }, { "date": "2026-02-09", "count": 2 }, { "date": "2026-02-10", "count": 5 }, { "date": "2026-02-11", "count": 6 }, { "date": "2026-02-12", "count": 6 }, { "date": "2026-02-13", "count": 7 }, { "date": "2026-02-14", "count": 1 }, { "date": "2026-02-15", "count": 2 }, { "date": "2026-02-16", "count": 1 }, { "date": "2026-02-17", "count": 5 }, { "date": "2026-02-18", "count": 3 }, { "date": "2026-02-19", "count": 9 }, { "date": "2026-02-20", "count": 7 }, { "date": "2026-02-21", "count": 3 }, { "date": "2026-02-22", "count": 3 }, { "date": "2026-02-23", "count": 2 }, { "date": "2026-02-24", "count": 2 }, { "date": "2026-02-25", "count": 7 }, { "date": "2026-02-26", "count": 4 }, { "date": "2026-02-27", "count": 4 }, { "date": "2026-02-28", "count": 7 }, { "date": "2026-03-01", "count": 2 }, { "date": "2026-03-02", "count": 5 }, { "date": "2026-03-03", "count": 1 }, { "date": "2026-03-04", "count": 5 }, { "date": "2026-03-05", "count": 8 }, { "date": "2026-03-06", "count": 3 }, { "date": "2026-03-07", "count": 3 }, { "date": "2026-03-08", "count": 2 }, { "date": "2026-03-09", "count": 2 }, { "date": "2026-03-10", "count": 6 }, { "date": "2026-03-11", "count": 3 }, { "date": "2026-03-12", "count": 2 }, { "date": "2026-03-13", "count": 4 }, { "date": "2026-03-14", "count": 2 }, { "date": "2026-03-15", "count": 2 }, { "date": "2026-03-16", "count": 8 }, { "date": "2026-03-17", "count": 4 }, { "date": "2026-03-18", "count": 4 }, { "date": "2026-03-19", "count": 5 }, { "date": "2026-03-20", "count": 2 }, { "date": "2026-03-21", "count": 4 }, { "date": "2026-03-22", "count": 7 }, { "date": "2026-03-23", "count": 3 }, { "date": "2026-03-24", "count": 11 }, { "date": "2026-03-25", "count": 10 }, { "date": "2026-03-26", "count": 5 }, { "date": "2026-03-27", "count": 5 }, { "date": "2026-03-28", "count": 2 }, { "date": "2026-03-29", "count": 2 }, { "date": "2026-03-30", "count": 1 }, { "date": "2026-03-31", "count": 5 }, { "date": "2026-04-01", "count": 5 }, { "date": "2026-04-02", "count": 2 }, { "date": "2026-04-03", "count": 4 }, { "date": "2026-04-04", "count": 3 }, { "date": "2026-04-05", "count": 2 }, { "date": "2026-04-06", "count": 3 }, { "date": "2026-04-07", "count": 3 }, { "date": "2026-04-08", "count": 1 }, { "date": "2026-04-09", "count": 7 }, { "date": "2026-04-10", "count": 6 }, { "date": "2026-04-11", "count": 4 }, { "date": "2026-04-12", "count": 4 }, { "date": "2026-04-13", "count": 7 }, { "date": "2026-04-14", "count": 3 }, { "date": "2026-04-15", "count": 8 }, { "date": "2026-04-16", "count": 5 }, { "date": "2026-04-17", "count": 4 }, { "date": "2026-04-18", "count": 1 }, { "date": "2026-04-19", "count": 4 }, { "date": "2026-04-20", "count": 6 }, { "date": "2026-04-21", "count": 1 }, { "date": "2026-04-22", "count": 3 }, { "date": "2026-04-23", "count": 7 }, { "date": "2026-04-24", "count": 7 }, { "date": "2026-04-25", "count": 7 }, { "date": "2026-04-26", "count": 6 }, { "date": "2026-04-27", "count": 2 }, { "date": "2026-04-28", "count": 9 }, { "date": "2026-04-29", "count": 10 }, { "date": "2026-04-30", "count": 4 }, { "date": "2026-05-01", "count": 5 }, { "date": "2026-05-02", "count": 7 }, { "date": "2026-05-03", "count": 4 }, { "date": "2026-05-04", "count": 3 }, { "date": "2026-05-05", "count": 6 }, { "date": "2026-05-06", "count": 3 }, { "date": "2026-05-07", "count": 10 }, { "date": "2026-05-08", "count": 5 }, { "date": "2026-05-09", "count": 2 }, { "date": "2026-05-10", "count": 3 }, { "date": "2026-05-11", "count": 2 }, { "date": "2026-05-12", "count": 1 }, { "date": "2026-05-13", "count": 1 }, { "date": "2026-05-14", "count": 3 }, { "date": "2026-05-15", "count": 4 }, { "date": "2026-05-16", "count": 5 }, { "date": "2026-05-17", "count": 5 }, { "date": "2026-05-18", "count": 5 }, { "date": "2026-05-19", "count": 6 }, { "date": "2026-05-20", "count": 10 }, { "date": "2026-05-21", "count": 5 }, { "date": "2026-05-22", "count": 4 }, { "date": "2026-05-23", "count": 2 }, { "date": "2026-05-24", "count": 8 }, { "date": "2026-05-25", "count": 11 }, { "date": "2026-05-26", "count": 7 }, { "date": "2026-05-27", "count": 2 }, { "date": "2026-05-28", "count": 6 }, { "date": "2026-05-29", "count": 5 }, { "date": "2026-05-30", "count": 10 }, { "date": "2026-05-31", "count": 5 }, { "date": "2026-06-01", "count": 4 }, { "date": "2026-06-02", "count": 3 }, { "date": "2026-06-03", "count": 3 }, { "date": "2026-06-04", "count": 5 }, { "date": "2026-06-05", "count": 26 }, { "date": "2026-06-06", "count": 5 }, { "date": "2026-06-07", "count": 6 }, { "date": "2026-06-08", "count": 2 }, { "date": "2026-06-10", "count": 24 }, { "date": "2026-06-11", "count": 4 }, { "date": "2026-06-12", "count": 3 }, { "date": "2026-06-13", "count": 6 }, { "date": "2026-06-14", "count": 6 }, { "date": "2026-06-15", "count": 2 }, { "date": "2026-06-16", "count": 6 }, { "date": "2026-06-17", "count": 6 }, { "date": "2026-06-18", "count": 2 }, { "date": "2026-06-19", "count": 2 }, { "date": "2026-06-20", "count": 2 }, { "date": "2026-06-21", "count": 2 }, { "date": "2026-06-22", "count": 4 }, { "date": "2026-06-23", "count": 1 }, { "date": "2026-06-24", "count": 12 }, { "date": "2026-06-25", "count": 3 }, { "date": "2026-06-26", "count": 4 }, { "date": "2026-06-27", "count": 8 }, { "date": "2026-06-28", "count": 1 }, { "date": "2026-06-29", "count": 1 }, { "date": "2026-06-30", "count": 6 }, { "date": "2026-07-01", "count": 3 }, { "date": "2026-07-02", "count": 7 }, { "date": "2026-07-03", "count": 3 }, { "date": "2026-07-04", "count": 5 }, { "date": "2026-07-05", "count": 4 }, { "date": "2026-07-06", "count": 6 }, { "date": "2026-07-07", "count": 5 }, { "date": "2026-07-08", "count": 4 }, { "date": "2026-07-09", "count": 7 }, { "date": "2026-07-10", "count": 4 }, { "date": "2026-07-11", "count": 3 }, { "date": "2026-07-13", "count": 4 }, { "date": "2026-07-14", "count": 5 }, { "date": "2026-07-15", "count": 5 }, { "date": "2026-07-16", "count": 5 }, { "date": "2026-07-17", "count": 2 }, { "date": "2026-07-18", "count": 5 }, { "date": "2026-07-19", "count": 7 }, { "date": "2026-07-20", "count": 9 }, { "date": "2026-07-21", "count": 9 } ], "complete": false, "collected": 1000, "total_stars": 58641 }, "open_issues_and_prs": 1555 }, "ai_readiness": { "has_nix": false, "example_dirs": [ "examples" ], "has_llms_txt": false, "has_dockerfile": true, "has_mcp_signal": false, "bootstrap_files": [], "api_schema_files": [], "has_devcontainer": true, "typecheck_configs": [], "toolchain_manifests": [], "largest_source_bytes": 449565, "source_files_sampled": 3497, "oversized_source_files": 39, "agent_instruction_files": [ "AGENTS.md" ], "agent_instruction_max_bytes": 6905 }, "dependencies": { "manifests": [ "Gemfile", "actioncable/package.json", "actiontext/package.json", "activestorage/package.json", "package.json" ], "advisories": { "error": null, "scope": "published_package", "source": "osv", "findings": [], "collected": true, "malicious": [], "truncated": false, "by_severity": {}, "advisory_count": 0, "affected_count": 0, "assessed_count": 2, "malicious_count": 0, "assessed_package": "npm:@rails/actiontext@8.1.300", "unassessed_count": 0, "direct_affected_count": 0 }, "ecosystems": [ "npm", "rubygems" ], "dependencies": [ { "name": "minitest", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 6.0" }, { "name": "minitest-mock", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "releaser", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "sprockets-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 2.0.0" }, { "name": "propshaft", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 0.1.7" }, { "name": "capybara", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 3.39" }, { "name": "selenium-webdriver", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 4.20.0" }, { "name": "rack-cache", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 1.2" }, { "name": "stimulus-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "turbo-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "jsbundling-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "cssbundling-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "importmap-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 1.2.3" }, { "name": "tailwindcss-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "dartsass-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "solid_cache", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "solid_queue", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "solid_cable", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "kamal", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 2.1.0" }, { "name": "thruster", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "bcrypt", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 3.1.11" }, { "name": "argon2", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 2.3.2" }, { "name": "terser", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 1.1.4" }, { "name": "json", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 2.0.0" }, { "name": "uri", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 0.13.1" }, { "name": "prism", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "1.79.2" }, { "name": "rubocop-minitest", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop-packaging", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop-performance", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop-rails", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop-md", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubocop-rails-omakase", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "mdl", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "!= 0.13.0" }, { "name": "sdoc", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 2.6.4" }, { "name": "redcarpet", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 3.6.1" }, { "name": "w3c_validators", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 1.3.6" }, { "name": "rouge", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rubyzip", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 2.0" }, { "name": "dalli", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "redis-client", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 0.28.0" }, { "name": "listen", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 3.3" }, { "name": "libxml-ruby", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "connection_pool", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rexml", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "msgpack", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 1.7.0" }, { "name": "bootsnap", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 1.4.4" }, { "name": "webrick", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "jbuilder", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "web-console", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rack", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "rack", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "useragent", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "resque", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "resque-scheduler", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "queue_classic", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 4.0.0" }, { "name": "sneakers", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "backburner", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "puma", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 5.0.3" }, { "name": "redis", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 4.0.1" }, { "name": "redis-namespace", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "websocket-client-simple", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "aws-sdk-s3", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "google-cloud-storage", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 1.11" }, { "name": "image_processing", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 2.0" }, { "name": "ruby-vips", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 2.3" }, { "name": "mini_magick", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 5.0" }, { "name": "aws-sdk-sns", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "webmock", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "brakeman", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "bundler-audit", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "nokogiri", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 1.8.1" }, { "name": "sqlite3", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 2.1" }, { "name": "pg", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 1.3" }, { "name": "mysql2", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": "~> 0.5" }, { "name": "trilogy", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 2.7.0" }, { "name": "tzinfo-data", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "wdm", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": ">= 0.1.0" }, { "name": "launchy", "manifest": "Gemfile", "ecosystem": "rubygems", "version_constraint": null }, { "name": "@rails/activestorage", "manifest": "actiontext/package.json", "ecosystem": "npm", "version_constraint": ">= 8.1.0-alpha" }, { "name": "spark-md5", "manifest": "activestorage/package.json", "ecosystem": "npm", "version_constraint": "^3.0.1" }, { "name": "js-sha256", "manifest": "activestorage/package.json", "ecosystem": "npm", "version_constraint": "^0.9.0" } ], "all_dependencies": { "error": null, "source": "github-sbom", "packages": [ { "name": "@rails/activestorage", "direct": true, "version": "8.1.0-beta1", "ecosystem": "npm" }, { "name": "@rails/activestorage", "direct": true, "version": ">= 8.1.0-alpha", "ecosystem": "npm" }, { "name": "js-sha256", "direct": true, "version": "0.9.0", "ecosystem": "npm" }, { "name": "js-sha256", "direct": true, "version": "^0.9.0", "ecosystem": "npm" }, { "name": "spark-md5", "direct": true, "version": "3.0.2", "ecosystem": "npm" }, { "name": "spark-md5", "direct": true, "version": "^3.0.1", "ecosystem": "npm" }, { "name": "argon2", "direct": true, "version": "2.3.2", "ecosystem": "rubygems" }, { "name": "aws-sdk-s3", "direct": true, "version": "1.197.0", "ecosystem": "rubygems" }, { "name": "aws-sdk-sns", "direct": true, "version": "1.92.0", "ecosystem": "rubygems" }, { "name": "backburner", "direct": true, "version": "1.7.0", "ecosystem": "rubygems" }, { "name": "bcrypt", "direct": true, "version": "3.1.20", "ecosystem": "rubygems" }, { "name": "bootsnap", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "bootsnap", "direct": true, "version": "1.18.4", "ecosystem": "rubygems" }, { "name": "brakeman", "direct": true, "version": "7.0.0", "ecosystem": "rubygems" }, { "name": "bundler-audit", "direct": true, "version": "0.9.3", "ecosystem": "rubygems" }, { "name": "capybara", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "capybara", "direct": true, "version": "3.40.0", "ecosystem": "rubygems" }, { "name": "connection_pool", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "connection_pool", "direct": true, "version": "3.0.2", "ecosystem": "rubygems" }, { "name": "cssbundling-rails", "direct": true, "version": "1.4.1", "ecosystem": "rubygems" }, { "name": "dalli", "direct": true, "version": "5.0.0", "ecosystem": "rubygems" }, { "name": "dartsass-rails", "direct": true, "version": "0.5.1", "ecosystem": "rubygems" }, { "name": "google-cloud-storage", "direct": true, "version": "1.54.0", "ecosystem": "rubygems" }, { "name": "image_processing", "direct": true, "version": "2.0.1", "ecosystem": "rubygems" }, { "name": "importmap-rails", "direct": true, "version": "2.1.0", "ecosystem": "rubygems" }, { "name": "jbuilder", "direct": true, "version": "2.13.0", "ecosystem": "rubygems" }, { "name": "jsbundling-rails", "direct": true, "version": "1.3.1", "ecosystem": "rubygems" }, { "name": "json", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "json", "direct": true, "version": "2.20.0", "ecosystem": "rubygems" }, { "name": "kamal", "direct": true, "version": "2.4.0", "ecosystem": "rubygems" }, { "name": "launchy", "direct": true, "version": "3.0.1", "ecosystem": "rubygems" }, { "name": "libxml-ruby", "direct": true, "version": "6.0.0", "ecosystem": "rubygems" }, { "name": "listen", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "listen", "direct": true, "version": "3.9.0", "ecosystem": "rubygems" }, { "name": "mdl", "direct": true, "version": "0.12.0", "ecosystem": "rubygems" }, { "name": "mini_magick", "direct": true, "version": "5.3.1", "ecosystem": "rubygems" }, { "name": "minitest", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "minitest", "direct": true, "version": "5.25.1", "ecosystem": "rubygems" }, { "name": "minitest", "direct": true, "version": "6.0.6", "ecosystem": "rubygems" }, { "name": "minitest-mock", "direct": true, "version": "5.27.0", "ecosystem": "rubygems" }, { "name": "msgpack", "direct": true, "version": "1.7.5", "ecosystem": "rubygems" }, { "name": "mysql2", "direct": true, "version": "0.5.6", "ecosystem": "rubygems" }, { "name": "nokogiri", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "nokogiri", "direct": true, "version": "1.19.1", "ecosystem": "rubygems" }, { "name": "pg", "direct": true, "version": "1.6.3", "ecosystem": "rubygems" }, { "name": "prism", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "prism", "direct": true, "version": "1.7.0", "ecosystem": "rubygems" }, { "name": "propshaft", "direct": true, "version": "1.3.1", "ecosystem": "rubygems" }, { "name": "puma", "direct": true, "version": "6.5.0", "ecosystem": "rubygems" }, { "name": "queue_classic", "direct": true, "version": "4.0.0", "ecosystem": "rubygems" }, { "name": "rack", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "rack", "direct": true, "version": "3.2.1", "ecosystem": "rubygems" }, { "name": "rack-cache", "direct": true, "version": "1.17.0", "ecosystem": "rubygems" }, { "name": "redcarpet", "direct": true, "version": "3.6.1", "ecosystem": "rubygems" }, { "name": "redis", "direct": true, "version": "5.4.1", "ecosystem": "rubygems" }, { "name": "redis-client", "direct": true, "version": "0.28.0", "ecosystem": "rubygems" }, { "name": "redis-namespace", "direct": true, "version": "1.11.0", "ecosystem": "rubygems" }, { "name": "resque", "direct": true, "version": "2.7.0", "ecosystem": "rubygems" }, { "name": "resque-scheduler", "direct": true, "version": "4.11.0", "ecosystem": "rubygems" }, { "name": "rexml", "direct": true, "version": "3.4.0", "ecosystem": "rubygems" }, { "name": "rouge", "direct": true, "version": "4.6.1", "ecosystem": "rubygems" }, { "name": "rubocop", "direct": true, "version": "1.79.2", "ecosystem": "rubygems" }, { "name": "rubocop-md", "direct": true, "version": "2.0.1", "ecosystem": "rubygems" }, { "name": "rubocop-minitest", "direct": true, "version": "0.37.1", "ecosystem": "rubygems" }, { "name": "rubocop-packaging", "direct": true, "version": "0.6.0", "ecosystem": "rubygems" }, { "name": "rubocop-performance", "direct": true, "version": "1.24.0", "ecosystem": "rubygems" }, { "name": "rubocop-rails", "direct": true, "version": "2.30.3", "ecosystem": "rubygems" }, { "name": "rubocop-rails-omakase", "direct": true, "version": "1.0.0", "ecosystem": "rubygems" }, { "name": "ruby-vips", "direct": true, "version": "2.3.0", "ecosystem": "rubygems" }, { "name": "rubyzip", "direct": true, "version": "2.4.1", "ecosystem": "rubygems" }, { "name": "sdoc", "direct": true, "version": "2.6.5", "ecosystem": "rubygems" }, { "name": "selenium-webdriver", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "selenium-webdriver", "direct": true, "version": "4.32.0", "ecosystem": "rubygems" }, { "name": "sneakers", "direct": true, "version": "2.11.0", "ecosystem": "rubygems" }, { "name": "solid_cable", "direct": true, "version": "3.0.5", "ecosystem": "rubygems" }, { "name": "solid_cache", "direct": true, "version": "1.0.6", "ecosystem": "rubygems" }, { "name": "solid_queue", "direct": true, "version": "1.1.2", "ecosystem": "rubygems" }, { "name": "sprockets-rails", "direct": true, "version": "3.5.2", "ecosystem": "rubygems" }, { "name": "sqlite3", "direct": true, "version": "2.5.0", "ecosystem": "rubygems" }, { "name": "stimulus-rails", "direct": true, "version": "1.3.4", "ecosystem": "rubygems" }, { "name": "tailwindcss-rails", "direct": true, "version": "3.2.0", "ecosystem": "rubygems" }, { "name": "terser", "direct": true, "version": "1.2.4", "ecosystem": "rubygems" }, { "name": "thruster", "direct": true, "version": "0.1.16", "ecosystem": "rubygems" }, { "name": "trilogy", "direct": true, "version": "2.11.0", "ecosystem": "rubygems" }, { "name": "turbo-rails", "direct": true, "version": "2.0.11", "ecosystem": "rubygems" }, { "name": "tzinfo-data", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "uri", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "uri", "direct": true, "version": "1.0.3", "ecosystem": "rubygems" }, { "name": "uri", "direct": true, "version": "1.0.4", "ecosystem": "rubygems" }, { "name": "useragent", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "useragent", "direct": true, "version": "0.16.11", "ecosystem": "rubygems" }, { "name": "w3c_validators", "direct": true, "version": "1.3.7", "ecosystem": "rubygems" }, { "name": "web-console", "direct": true, "version": null, "ecosystem": "rubygems" }, { "name": "web-console", "direct": true, "version": "4.2.1", "ecosystem": "rubygems" }, { "name": "webmock", "direct": true, "version": "3.25.0", "ecosystem": "rubygems" }, { "name": "webrick", "direct": true, "version": "1.9.1", "ecosystem": "rubygems" }, { "name": "websocket-client-simple", "direct": true, "version": "0.9.0", "ecosystem": "rubygems" }, { "name": "@babel/code-frame", "direct": false, "version": "7.22.5", "ecosystem": "npm" }, { "name": "@babel/helper-validator-identifier", "direct": false, "version": "7.22.5", "ecosystem": "npm" }, { "name": "@babel/highlight", "direct": false, "version": "7.22.5", "ecosystem": "npm" }, { "name": "@eggjs/yauzl", "direct": false, "version": "2.11.0", "ecosystem": "npm" }, { "name": "@eslint-community/eslint-utils", "direct": false, "version": "4.9.0", "ecosystem": "npm" }, { "name": "@eslint-community/regexpp", "direct": false, "version": "4.12.1", "ecosystem": "npm" }, { "name": "@eslint/config-array", "direct": false, "version": "0.21.0", "ecosystem": "npm" }, { "name": "@eslint/config-helpers", "direct": false, "version": "0.4.0", "ecosystem": "npm" }, { "name": "@eslint/core", "direct": false, "version": "0.16.0", "ecosystem": "npm" }, { "name": "@eslint/eslintrc", "direct": false, "version": "3.3.1", "ecosystem": "npm" }, { "name": "@eslint/js", "direct": false, "version": "9.37.0", "ecosystem": "npm" }, { "name": "@eslint/js", "direct": false, "version": "^9.24.0", "ecosystem": "npm" }, { "name": "@eslint/object-schema", "direct": false, "version": "2.1.6", "ecosystem": "npm" }, { "name": "@eslint/plugin-kit", "direct": false, "version": "0.4.0", "ecosystem": "npm" }, { "name": "@hapi/bourne", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "@humanfs/core", "direct": false, "version": "0.19.1", "ecosystem": "npm" }, { "name": "@humanfs/node", "direct": false, "version": "0.16.7", "ecosystem": "npm" }, { "name": "@humanwhocodes/module-importer", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "@humanwhocodes/retry", "direct": false, "version": "0.4.3", "ecosystem": "npm" }, { "name": "@isaacs/cliui", "direct": false, "version": "8.0.2", "ecosystem": "npm" }, { "name": "@jridgewell/resolve-uri", "direct": false, "version": "3.1.2", "ecosystem": "npm" }, { "name": "@jridgewell/source-map", "direct": false, "version": "0.3.4", "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": "@nodable/entities", "direct": false, "version": "2.2.0", "ecosystem": "npm" }, { "name": "@nodelib/fs.scandir", "direct": false, "version": "2.1.5", "ecosystem": "npm" }, { "name": "@nodelib/fs.stat", "direct": false, "version": "2.0.5", "ecosystem": "npm" }, { "name": "@nodelib/fs.walk", "direct": false, "version": "1.2.8", "ecosystem": "npm" }, { "name": "@pkgjs/parseargs", "direct": false, "version": "0.11.0", "ecosystem": "npm" }, { "name": "@promptbook/utils", "direct": false, "version": "0.69.5", "ecosystem": "npm" }, { "name": "@puppeteer/browsers", "direct": false, "version": "2.13.2", "ecosystem": "npm" }, { "name": "@rollup/plugin-commonjs", "direct": false, "version": "19.0.2", "ecosystem": "npm" }, { "name": "@rollup/plugin-commonjs", "direct": false, "version": "^19.0.1", "ecosystem": "npm" }, { "name": "@rollup/plugin-node-resolve", "direct": false, "version": "11.2.1", "ecosystem": "npm" }, { "name": "@rollup/plugin-node-resolve", "direct": false, "version": "15.3.1", "ecosystem": "npm" }, { "name": "@rollup/plugin-node-resolve", "direct": false, "version": "^11.0.1", "ecosystem": "npm" }, { "name": "@rollup/pluginutils", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "@rollup/pluginutils", "direct": false, "version": "5.4.0", "ecosystem": "npm" }, { "name": "@rollup/rollup-android-arm-eabi", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-android-arm64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-darwin-arm64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-darwin-x64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-freebsd-arm64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-freebsd-x64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-arm-gnueabihf", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-arm-musleabihf", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-arm64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-arm64-musl", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-loong64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-loong64-musl", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-ppc64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-ppc64-musl", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-riscv64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-riscv64-musl", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-s390x-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-x64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-linux-x64-musl", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-openbsd-x64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-openharmony-arm64", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-win32-arm64-msvc", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-win32-ia32-msvc", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-win32-x64-gnu", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rollup/rollup-win32-x64-msvc", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "@rtsao/scc", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "@sindresorhus/is", "direct": false, "version": "4.6.0", "ecosystem": "npm" }, { "name": "@szmarczak/http-timer", "direct": false, "version": "4.0.6", "ecosystem": "npm" }, { "name": "@tootallnate/quickjs-emscripten", "direct": false, "version": "0.23.0", "ecosystem": "npm" }, { "name": "@types/accepts", "direct": false, "version": "1.3.7", "ecosystem": "npm" }, { "name": "@types/babel__code-frame", "direct": false, "version": "7.27.0", "ecosystem": "npm" }, { "name": "@types/body-parser", "direct": false, "version": "1.19.6", "ecosystem": "npm" }, { "name": "@types/cacheable-request", "direct": false, "version": "6.0.3", "ecosystem": "npm" }, { "name": "@types/co-body", "direct": false, "version": "6.1.3", "ecosystem": "npm" }, { "name": "@types/command-line-args", "direct": false, "version": "5.2.3", "ecosystem": "npm" }, { "name": "@types/connect", "direct": false, "version": "3.4.38", "ecosystem": "npm" }, { "name": "@types/content-disposition", "direct": false, "version": "0.5.9", "ecosystem": "npm" }, { "name": "@types/convert-source-map", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "@types/cookies", "direct": false, "version": "0.9.2", "ecosystem": "npm" }, { "name": "@types/debounce", "direct": false, "version": "1.2.4", "ecosystem": "npm" }, { "name": "@types/estree", "direct": false, "version": "0.0.39", "ecosystem": "npm" }, { "name": "@types/estree", "direct": false, "version": "1.0.8", "ecosystem": "npm" }, { "name": "@types/estree", "direct": false, "version": "1.0.9", "ecosystem": "npm" }, { "name": "@types/express", "direct": false, "version": "5.0.6", "ecosystem": "npm" }, { "name": "@types/express-serve-static-core", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "@types/http-assert", "direct": false, "version": "1.5.6", "ecosystem": "npm" }, { "name": "@types/http-cache-semantics", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "@types/http-errors", "direct": false, "version": "2.0.5", "ecosystem": "npm" }, { "name": "@types/istanbul-lib-coverage", "direct": false, "version": "2.0.6", "ecosystem": "npm" }, { "name": "@types/istanbul-lib-report", "direct": false, "version": "3.0.3", "ecosystem": "npm" }, { "name": "@types/istanbul-reports", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "@types/json-schema", "direct": false, "version": "7.0.15", "ecosystem": "npm" }, { "name": "@types/json5", "direct": false, "version": "0.0.29", "ecosystem": "npm" }, { "name": "@types/keygrip", "direct": false, "version": "1.0.6", "ecosystem": "npm" }, { "name": "@types/keyv", "direct": false, "version": "3.1.4", "ecosystem": "npm" }, { "name": "@types/koa", "direct": false, "version": "2.15.2", "ecosystem": "npm" }, { "name": "@types/koa", "direct": false, "version": "3.0.3", "ecosystem": "npm" }, { "name": "@types/koa-compose", "direct": false, "version": "3.2.9", "ecosystem": "npm" }, { "name": "@types/node", "direct": false, "version": "20.19.43", "ecosystem": "npm" }, { "name": "@types/node", "direct": false, "version": "20.3.2", "ecosystem": "npm" }, { "name": "@types/parse5", "direct": false, "version": "6.0.3", "ecosystem": "npm" }, { "name": "@types/qs", "direct": false, "version": "6.15.1", "ecosystem": "npm" }, { "name": "@types/range-parser", "direct": false, "version": "1.2.7", "ecosystem": "npm" }, { "name": "@types/resolve", "direct": false, "version": "1.17.1", "ecosystem": "npm" }, { "name": "@types/resolve", "direct": false, "version": "1.20.2", "ecosystem": "npm" }, { "name": "@types/responselike", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "@types/send", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "@types/serve-static", "direct": false, "version": "2.2.0", "ecosystem": "npm" }, { "name": "@types/sinonjs__fake-timers", "direct": false, "version": "8.1.5", "ecosystem": "npm" }, { "name": "@types/which", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "@types/ws", "direct": false, "version": "7.4.7", "ecosystem": "npm" }, { "name": "@types/ws", "direct": false, "version": "8.18.1", "ecosystem": "npm" }, { "name": "@types/yauzl", "direct": false, "version": "2.10.3", "ecosystem": "npm" }, { "name": "@wdio/config", "direct": false, "version": "9.28.0", "ecosystem": "npm" }, { "name": "@wdio/logger", "direct": false, "version": "9.18.0", "ecosystem": "npm" }, { "name": "@wdio/protocols", "direct": false, "version": "9.28.0", "ecosystem": "npm" }, { "name": "@wdio/repl", "direct": false, "version": "9.16.2", "ecosystem": "npm" }, { "name": "@wdio/types", "direct": false, "version": "9.28.0", "ecosystem": "npm" }, { "name": "@wdio/utils", "direct": false, "version": "9.28.0", "ecosystem": "npm" }, { "name": "@web/browser-logs", "direct": false, "version": "0.4.1", "ecosystem": "npm" }, { "name": "@web/config-loader", "direct": false, "version": "0.3.3", "ecosystem": "npm" }, { "name": "@web/dev-server", "direct": false, "version": "0.4.6", "ecosystem": "npm" }, { "name": "@web/dev-server-core", "direct": false, "version": "0.7.5", "ecosystem": "npm" }, { "name": "@web/dev-server-rollup", "direct": false, "version": "0.6.4", "ecosystem": "npm" }, { "name": "@web/parse5-utils", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "@web/test-runner", "direct": false, "version": "0.20.2", "ecosystem": "npm" }, { "name": "@web/test-runner", "direct": false, "version": "^0.20.2", "ecosystem": "npm" }, { "name": "@web/test-runner-chrome", "direct": false, "version": "0.18.1", "ecosystem": "npm" }, { "name": "@web/test-runner-commands", "direct": false, "version": "0.9.0", "ecosystem": "npm" }, { "name": "@web/test-runner-core", "direct": false, "version": "0.13.4", "ecosystem": "npm" }, { "name": "@web/test-runner-coverage-v8", "direct": false, "version": "0.8.0", "ecosystem": "npm" }, { "name": "@web/test-runner-mocha", "direct": false, "version": "0.9.0", "ecosystem": "npm" }, { "name": "@web/test-runner-saucelabs", "direct": false, "version": "0.13.0", "ecosystem": "npm" }, { "name": "@web/test-runner-saucelabs", "direct": false, "version": "^0.13.0", "ecosystem": "npm" }, { "name": "@web/test-runner-webdriver", "direct": false, "version": "0.9.0", "ecosystem": "npm" }, { "name": "@zip.js/zip.js", "direct": false, "version": "2.8.26", "ecosystem": "npm" }, { "name": "abort-controller", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "accepts", "direct": false, "version": "1.3.8", "ecosystem": "npm" }, { "name": "acorn", "direct": false, "version": "8.15.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.12.6", "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-regex", "direct": false, "version": "6.2.2", "ecosystem": "npm" }, { "name": "ansi-styles", "direct": false, "version": "3.2.1", "ecosystem": "npm" }, { "name": "ansi-styles", "direct": false, "version": "4.3.0", "ecosystem": "npm" }, { "name": "ansi-styles", "direct": false, "version": "6.2.3", "ecosystem": "npm" }, { "name": "anynum", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "archiver", "direct": false, "version": "7.0.1", "ecosystem": "npm" }, { "name": "archiver-utils", "direct": false, "version": "5.0.2", "ecosystem": "npm" }, { "name": "argparse", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "aria-query", "direct": false, "version": "5.3.2", "ecosystem": "npm" }, { "name": "array-back", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "array-back", "direct": false, "version": "6.2.3", "ecosystem": "npm" }, { "name": "array-buffer-byte-length", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "array-includes", "direct": false, "version": "3.1.9", "ecosystem": "npm" }, { "name": "array-union", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "array.prototype.findlastindex", "direct": false, "version": "1.2.6", "ecosystem": "npm" }, { "name": "array.prototype.flat", "direct": false, "version": "1.3.3", "ecosystem": "npm" }, { "name": "array.prototype.flatmap", "direct": false, "version": "1.3.3", "ecosystem": "npm" }, { "name": "arraybuffer.prototype.slice", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "ast-types", "direct": false, "version": "0.13.4", "ecosystem": "npm" }, { "name": "astral-regex", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "async", "direct": false, "version": "3.2.6", "ecosystem": "npm" }, { "name": "async-function", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "asynckit", "direct": false, "version": "0.4.0", "ecosystem": "npm" }, { "name": "available-typed-arrays", "direct": false, "version": "1.0.7", "ecosystem": "npm" }, { "name": "b4a", "direct": false, "version": "1.8.1", "ecosystem": "npm" }, { "name": "balanced-match", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "bare-events", "direct": false, "version": "2.9.1", "ecosystem": "npm" }, { "name": "bare-fs", "direct": false, "version": "4.7.2", "ecosystem": "npm" }, { "name": "bare-os", "direct": false, "version": "3.9.1", "ecosystem": "npm" }, { "name": "bare-path", "direct": false, "version": "3.0.1", "ecosystem": "npm" }, { "name": "bare-stream", "direct": false, "version": "2.13.2", "ecosystem": "npm" }, { "name": "bare-url", "direct": false, "version": "2.4.5", "ecosystem": "npm" }, { "name": "base64-js", "direct": false, "version": "1.5.1", "ecosystem": "npm" }, { "name": "basic-ftp", "direct": false, "version": "5.3.1", "ecosystem": "npm" }, { "name": "bl", "direct": false, "version": "1.2.3", "ecosystem": "npm" }, { "name": "boolbase", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "brace-expansion", "direct": false, "version": "1.1.11", "ecosystem": "npm" }, { "name": "brace-expansion", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "braces", "direct": false, "version": "3.0.3", "ecosystem": "npm" }, { "name": "buffer", "direct": false, "version": "6.0.3", "ecosystem": "npm" }, { "name": "buffer-alloc", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "buffer-alloc-unsafe", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "buffer-crc32", "direct": false, "version": "0.2.13", "ecosystem": "npm" }, { "name": "buffer-crc32", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "buffer-fill", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "buffer-from", "direct": false, "version": "1.1.2", "ecosystem": "npm" }, { "name": "builtin-modules", "direct": false, "version": "3.3.0", "ecosystem": "npm" }, { "name": "bytes", "direct": false, "version": "3.1.2", "ecosystem": "npm" }, { "name": "cache-content-type", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "cacheable-lookup", "direct": false, "version": "5.0.4", "ecosystem": "npm" }, { "name": "cacheable-request", "direct": false, "version": "7.0.4", "ecosystem": "npm" }, { "name": "call-bind", "direct": false, "version": "1.0.8", "ecosystem": "npm" }, { "name": "call-bind-apply-helpers", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "call-bound", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "callsites", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "camel-case", "direct": false, "version": "4.1.2", "ecosystem": "npm" }, { "name": "camelcase", "direct": false, "version": "6.3.0", "ecosystem": "npm" }, { "name": "capital-case", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "chalk", "direct": false, "version": "2.4.2", "ecosystem": "npm" }, { "name": "chalk", "direct": false, "version": "4.1.2", "ecosystem": "npm" }, { "name": "chalk", "direct": false, "version": "5.6.2", "ecosystem": "npm" }, { "name": "chalk-template", "direct": false, "version": "0.4.0", "ecosystem": "npm" }, { "name": "change-case", "direct": false, "version": "4.1.2", "ecosystem": "npm" }, { "name": "cheerio", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "cheerio-select", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "chokidar", "direct": false, "version": "4.0.3", "ecosystem": "npm" }, { "name": "chrome-launcher", "direct": false, "version": "0.15.2", "ecosystem": "npm" }, { "name": "chromium-bidi", "direct": false, "version": "14.0.0", "ecosystem": "npm" }, { "name": "cli-cursor", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "cliui", "direct": false, "version": "8.0.1", "ecosystem": "npm" }, { "name": "clone", "direct": false, "version": "2.1.2", "ecosystem": "npm" }, { "name": "clone-response", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "co", "direct": false, "version": "4.6.0", "ecosystem": "npm" }, { "name": "co-body", "direct": false, "version": "6.2.0", "ecosystem": "npm" }, { "name": "color-convert", "direct": false, "version": "1.9.3", "ecosystem": "npm" }, { "name": "color-convert", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "color-name", "direct": false, "version": "1.1.3", "ecosystem": "npm" }, { "name": "color-name", "direct": false, "version": "1.1.4", "ecosystem": "npm" }, { "name": "combined-stream", "direct": false, "version": "1.0.8", "ecosystem": "npm" }, { "name": "command-line-args", "direct": false, "version": "5.2.1", "ecosystem": "npm" }, { "name": "command-line-usage", "direct": false, "version": "7.0.4", "ecosystem": "npm" }, { "name": "commander", "direct": false, "version": "2.20.3", "ecosystem": "npm" }, { "name": "commander", "direct": false, "version": "7.2.0", "ecosystem": "npm" }, { "name": "commander", "direct": false, "version": "9.5.0", "ecosystem": "npm" }, { "name": "commondir", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "compress-commons", "direct": false, "version": "6.0.2", "ecosystem": "npm" }, { "name": "compressing", "direct": false, "version": "1.10.5", "ecosystem": "npm" }, { "name": "concat-map", "direct": false, "version": "0.0.1", "ecosystem": "npm" }, { "name": "constant-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "content-disposition", "direct": false, "version": "0.5.4", "ecosystem": "npm" }, { "name": "content-type", "direct": false, "version": "1.0.5", "ecosystem": "npm" }, { "name": "convert-source-map", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "cookies", "direct": false, "version": "0.9.1", "ecosystem": "npm" }, { "name": "core-util-is", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "crc-32", "direct": false, "version": "1.2.2", "ecosystem": "npm" }, { "name": "crc32-stream", "direct": false, "version": "6.0.0", "ecosystem": "npm" }, { "name": "cross-spawn", "direct": false, "version": "7.0.6", "ecosystem": "npm" }, { "name": "css-select", "direct": false, "version": "5.2.2", "ecosystem": "npm" }, { "name": "css-shorthand-properties", "direct": false, "version": "1.1.2", "ecosystem": "npm" }, { "name": "css-value", "direct": false, "version": "0.0.1", "ecosystem": "npm" }, { "name": "css-what", "direct": false, "version": "6.2.2", "ecosystem": "npm" }, { "name": "data-uri-to-buffer", "direct": false, "version": "6.0.2", "ecosystem": "npm" }, { "name": "data-view-buffer", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "data-view-byte-length", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "data-view-byte-offset", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "debounce", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "debug", "direct": false, "version": "2.6.9", "ecosystem": "npm" }, { "name": "debug", "direct": false, "version": "3.2.7", "ecosystem": "npm" }, { "name": "debug", "direct": false, "version": "4.3.4", "ecosystem": "npm" }, { "name": "debug", "direct": false, "version": "4.4.3", "ecosystem": "npm" }, { "name": "decamelize", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "decode-uri-component", "direct": false, "version": "0.2.2", "ecosystem": "npm" }, { "name": "decompress-response", "direct": false, "version": "6.0.0", "ecosystem": "npm" }, { "name": "deep-equal", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "deep-is", "direct": false, "version": "0.1.4", "ecosystem": "npm" }, { "name": "deepmerge", "direct": false, "version": "4.3.1", "ecosystem": "npm" }, { "name": "deepmerge-ts", "direct": false, "version": "7.1.5", "ecosystem": "npm" }, { "name": "default-gateway", "direct": false, "version": "6.0.3", "ecosystem": "npm" }, { "name": "defer-to-connect", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "define-data-property", "direct": false, "version": "1.1.4", "ecosystem": "npm" }, { "name": "define-lazy-prop", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "define-properties", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "degenerator", "direct": false, "version": "5.0.1", "ecosystem": "npm" }, { "name": "delayed-stream", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "delegates", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "depd", "direct": false, "version": "1.1.2", "ecosystem": "npm" }, { "name": "depd", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "dependency-graph", "direct": false, "version": "0.11.0", "ecosystem": "npm" }, { "name": "destroy", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "devtools-protocol", "direct": false, "version": "0.0.1608973", "ecosystem": "npm" }, { "name": "diff", "direct": false, "version": "5.2.2", "ecosystem": "npm" }, { "name": "dir-glob", "direct": false, "version": "3.0.1", "ecosystem": "npm" }, { "name": "doctrine", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "dom-serializer", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "domelementtype", "direct": false, "version": "2.3.0", "ecosystem": "npm" }, { "name": "domhandler", "direct": false, "version": "5.0.3", "ecosystem": "npm" }, { "name": "domutils", "direct": false, "version": "3.2.2", "ecosystem": "npm" }, { "name": "dot-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "dunder-proto", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "eastasianwidth", "direct": false, "version": "0.2.0", "ecosystem": "npm" }, { "name": "edge-paths", "direct": false, "version": "3.0.5", "ecosystem": "npm" }, { "name": "edgedriver", "direct": false, "version": "6.3.0", "ecosystem": "npm" }, { "name": "ee-first", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "emoji-regex", "direct": false, "version": "8.0.0", "ecosystem": "npm" }, { "name": "emoji-regex", "direct": false, "version": "9.2.2", "ecosystem": "npm" }, { "name": "encodeurl", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "encoding-sniffer", "direct": false, "version": "0.2.1", "ecosystem": "npm" }, { "name": "end-of-stream", "direct": false, "version": "1.4.4", "ecosystem": "npm" }, { "name": "entities", "direct": false, "version": "4.5.0", "ecosystem": "npm" }, { "name": "entities", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "entities", "direct": false, "version": "7.0.1", "ecosystem": "npm" }, { "name": "errorstacks", "direct": false, "version": "2.4.2", "ecosystem": "npm" }, { "name": "es-abstract", "direct": false, "version": "1.24.0", "ecosystem": "npm" }, { "name": "es-define-property", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "es-errors", "direct": false, "version": "1.3.0", "ecosystem": "npm" }, { "name": "es-module-lexer", "direct": false, "version": "1.7.0", "ecosystem": "npm" }, { "name": "es-object-atoms", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "es-set-tostringtag", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "es-shim-unscopables", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "es-to-primitive", "direct": false, "version": "1.3.0", "ecosystem": "npm" }, { "name": "escalade", "direct": false, "version": "3.2.0", "ecosystem": "npm" }, { "name": "escape-html", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "escape-string-regexp", "direct": false, "version": "1.0.5", "ecosystem": "npm" }, { "name": "escape-string-regexp", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "escodegen", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "eslint", "direct": false, "version": "9.37.0", "ecosystem": "npm" }, { "name": "eslint", "direct": false, "version": "^9.24.0", "ecosystem": "npm" }, { "name": "eslint-import-resolver-node", "direct": false, "version": "0.3.9", "ecosystem": "npm" }, { "name": "eslint-module-utils", "direct": false, "version": "2.12.1", "ecosystem": "npm" }, { "name": "eslint-plugin-import", "direct": false, "version": "2.32.0", "ecosystem": "npm" }, { "name": "eslint-plugin-import", "direct": false, "version": "^2.31.0", "ecosystem": "npm" }, { "name": "eslint-scope", "direct": false, "version": "8.4.0", "ecosystem": "npm" }, { "name": "eslint-visitor-keys", "direct": false, "version": "3.4.3", "ecosystem": "npm" }, { "name": "eslint-visitor-keys", "direct": false, "version": "4.2.1", "ecosystem": "npm" }, { "name": "espree", "direct": false, "version": "10.4.0", "ecosystem": "npm" }, { "name": "esprima", "direct": false, "version": "4.0.1", "ecosystem": "npm" }, { "name": "esquery", "direct": false, "version": "1.5.0", "ecosystem": "npm" }, { "name": "esrecurse", "direct": false, "version": "4.3.0", "ecosystem": "npm" }, { "name": "estraverse", "direct": false, "version": "5.3.0", "ecosystem": "npm" }, { "name": "estree-walker", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "estree-walker", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "esutils", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "etag", "direct": false, "version": "1.8.1", "ecosystem": "npm" }, { "name": "event-target-shim", "direct": false, "version": "5.0.1", "ecosystem": "npm" }, { "name": "events", "direct": false, "version": "3.3.0", "ecosystem": "npm" }, { "name": "events-universal", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "execa", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "extract-zip", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "fast-deep-equal", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "fast-deep-equal", "direct": false, "version": "3.1.3", "ecosystem": "npm" }, { "name": "fast-fifo", "direct": false, "version": "1.3.2", "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-xml-builder", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "fast-xml-parser", "direct": false, "version": "5.8.0", "ecosystem": "npm" }, { "name": "fastq", "direct": false, "version": "1.20.1", "ecosystem": "npm" }, { "name": "fd-slicer", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "fd-slicer2", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "file-entry-cache", "direct": false, "version": "8.0.0", "ecosystem": "npm" }, { "name": "fill-range", "direct": false, "version": "7.1.1", "ecosystem": "npm" }, { "name": "filter-obj", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "find-replace", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "find-up", "direct": false, "version": "5.0.0", "ecosystem": "npm" }, { "name": "flat-cache", "direct": false, "version": "4.0.1", "ecosystem": "npm" }, { "name": "flatted", "direct": false, "version": "3.3.1", "ecosystem": "npm" }, { "name": "flushwritable", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "for-each", "direct": false, "version": "0.3.5", "ecosystem": "npm" }, { "name": "foreground-child", "direct": false, "version": "3.3.1", "ecosystem": "npm" }, { "name": "form-data", "direct": false, "version": "4.0.5", "ecosystem": "npm" }, { "name": "fresh", "direct": false, "version": "0.5.2", "ecosystem": "npm" }, { "name": "fs-constants", "direct": false, "version": "1.0.0", "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": "function.prototype.name", "direct": false, "version": "1.1.8", "ecosystem": "npm" }, { "name": "functions-have-names", "direct": false, "version": "1.2.3", "ecosystem": "npm" }, { "name": "geckodriver", "direct": false, "version": "6.1.0", "ecosystem": "npm" }, { "name": "generator-function", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "get-caller-file", "direct": false, "version": "2.0.5", "ecosystem": "npm" }, { "name": "get-intrinsic", "direct": false, "version": "1.3.0", "ecosystem": "npm" }, { "name": "get-port", "direct": false, "version": "7.2.0", "ecosystem": "npm" }, { "name": "get-proto", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "get-ready", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "get-stream", "direct": false, "version": "5.2.0", "ecosystem": "npm" }, { "name": "get-stream", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "get-symbol-description", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "get-uri", "direct": false, "version": "6.0.5", "ecosystem": "npm" }, { "name": "glob", "direct": false, "version": "10.5.0", "ecosystem": "npm" }, { "name": "glob", "direct": false, "version": "7.2.3", "ecosystem": "npm" }, { "name": "glob-parent", "direct": false, "version": "5.1.2", "ecosystem": "npm" }, { "name": "glob-parent", "direct": false, "version": "6.0.2", "ecosystem": "npm" }, { "name": "globals", "direct": false, "version": "14.0.0", "ecosystem": "npm" }, { "name": "globals", "direct": false, "version": "^14.0.0", "ecosystem": "npm" }, { "name": "globalthis", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "globalyzer", "direct": false, "version": "0.1.0", "ecosystem": "npm" }, { "name": "globby", "direct": false, "version": "11.1.0", "ecosystem": "npm" }, { "name": "globrex", "direct": false, "version": "0.1.2", "ecosystem": "npm" }, { "name": "gopd", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "got", "direct": false, "version": "11.8.6", "ecosystem": "npm" }, { "name": "graceful-fs", "direct": false, "version": "4.2.11", "ecosystem": "npm" }, { "name": "grapheme-splitter", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "has-bigints", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "has-flag", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "has-flag", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "has-property-descriptors", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "has-proto", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "has-symbols", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "has-tostringtag", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "hash.js", "direct": false, "version": "1.1.7", "ecosystem": "npm" }, { "name": "hasown", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "header-case", "direct": false, "version": "2.0.4", "ecosystem": "npm" }, { "name": "html-escaper", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "htmlfy", "direct": false, "version": "0.8.1", "ecosystem": "npm" }, { "name": "htmlparser2", "direct": false, "version": "10.1.0", "ecosystem": "npm" }, { "name": "http-assert", "direct": false, "version": "1.5.0", "ecosystem": "npm" }, { "name": "http-cache-semantics", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "http-errors", "direct": false, "version": "1.6.3", "ecosystem": "npm" }, { "name": "http-errors", "direct": false, "version": "1.8.1", "ecosystem": "npm" }, { "name": "http-errors", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "http-proxy-agent", "direct": false, "version": "7.0.2", "ecosystem": "npm" }, { "name": "http2-wrapper", "direct": false, "version": "1.0.3", "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.4.24", "ecosystem": "npm" }, { "name": "iconv-lite", "direct": false, "version": "0.5.2", "ecosystem": "npm" }, { "name": "iconv-lite", "direct": false, "version": "0.6.3", "ecosystem": "npm" }, { "name": "ieee754", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "ignore", "direct": false, "version": "5.3.2", "ecosystem": "npm" }, { "name": "immediate", "direct": false, "version": "3.0.6", "ecosystem": "npm" }, { "name": "import-fresh", "direct": false, "version": "3.3.0", "ecosystem": "npm" }, { "name": "import-meta-resolve", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "imurmurhash", "direct": false, "version": "0.1.4", "ecosystem": "npm" }, { "name": "inflation", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "inflight", "direct": false, "version": "1.0.6", "ecosystem": "npm" }, { "name": "inherits", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "inherits", "direct": false, "version": "2.0.4", "ecosystem": "npm" }, { "name": "internal-ip", "direct": false, "version": "6.2.0", "ecosystem": "npm" }, { "name": "internal-slot", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "ip-address", "direct": false, "version": "10.2.0", "ecosystem": "npm" }, { "name": "ip-regex", "direct": false, "version": "4.3.0", "ecosystem": "npm" }, { "name": "ipaddr.js", "direct": false, "version": "1.9.1", "ecosystem": "npm" }, { "name": "is-array-buffer", "direct": false, "version": "3.0.5", "ecosystem": "npm" }, { "name": "is-async-function", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "is-bigint", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "is-boolean-object", "direct": false, "version": "1.2.2", "ecosystem": "npm" }, { "name": "is-callable", "direct": false, "version": "1.2.7", "ecosystem": "npm" }, { "name": "is-core-module", "direct": false, "version": "2.16.1", "ecosystem": "npm" }, { "name": "is-data-view", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "is-date-object", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "is-docker", "direct": false, "version": "2.2.1", "ecosystem": "npm" }, { "name": "is-extglob", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "is-finalizationregistry", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "is-fullwidth-code-point", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "is-generator-function", "direct": false, "version": "1.1.2", "ecosystem": "npm" }, { "name": "is-glob", "direct": false, "version": "4.0.3", "ecosystem": "npm" }, { "name": "is-ip", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "is-map", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "is-module", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "is-negative-zero", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "is-number", "direct": false, "version": "7.0.0", "ecosystem": "npm" }, { "name": "is-number-object", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "is-plain-obj", "direct": false, "version": "4.1.0", "ecosystem": "npm" }, { "name": "is-reference", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "is-regex", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "is-set", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "is-shared-array-buffer", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "is-stream", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "is-string", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "is-symbol", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "is-typed-array", "direct": false, "version": "1.1.15", "ecosystem": "npm" }, { "name": "is-weakmap", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "is-weakref", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "is-weakset", "direct": false, "version": "2.0.4", "ecosystem": "npm" }, { "name": "is-wsl", "direct": false, "version": "2.2.0", "ecosystem": "npm" }, { "name": "isarray", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "isarray", "direct": false, "version": "2.0.5", "ecosystem": "npm" }, { "name": "isbinaryfile", "direct": false, "version": "5.0.7", "ecosystem": "npm" }, { "name": "isexe", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "isexe", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "istanbul-lib-coverage", "direct": false, "version": "3.2.2", "ecosystem": "npm" }, { "name": "istanbul-lib-report", "direct": false, "version": "3.0.1", "ecosystem": "npm" }, { "name": "istanbul-reports", "direct": false, "version": "3.2.0", "ecosystem": "npm" }, { "name": "jackspeak", "direct": false, "version": "3.4.3", "ecosystem": "npm" }, { "name": "jest-worker", "direct": false, "version": "26.6.2", "ecosystem": "npm" }, { "name": "jiti", "direct": false, "version": "2.7.0", "ecosystem": "npm" }, { "name": "js-tokens", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "js-yaml", "direct": false, "version": "4.1.0", "ecosystem": "npm" }, { "name": "json-buffer", "direct": false, "version": "3.0.1", "ecosystem": "npm" }, { "name": "json-schema-traverse", "direct": false, "version": "0.4.1", "ecosystem": "npm" }, { "name": "json-stable-stringify-without-jsonify", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "json5", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "jszip", "direct": false, "version": "3.10.1", "ecosystem": "npm" }, { "name": "keygrip", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "keyv", "direct": false, "version": "4.5.4", "ecosystem": "npm" }, { "name": "koa", "direct": false, "version": "2.16.4", "ecosystem": "npm" }, { "name": "koa-compose", "direct": false, "version": "4.1.0", "ecosystem": "npm" }, { "name": "koa-convert", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "koa-etag", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "koa-send", "direct": false, "version": "5.0.1", "ecosystem": "npm" }, { "name": "koa-static", "direct": false, "version": "5.0.0", "ecosystem": "npm" }, { "name": "lazystream", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "levn", "direct": false, "version": "0.4.1", "ecosystem": "npm" }, { "name": "lie", "direct": false, "version": "3.3.0", "ecosystem": "npm" }, { "name": "lighthouse-logger", "direct": false, "version": "1.4.2", "ecosystem": "npm" }, { "name": "locate-app", "direct": false, "version": "2.5.0", "ecosystem": "npm" }, { "name": "locate-path", "direct": false, "version": "6.0.0", "ecosystem": "npm" }, { "name": "lodash", "direct": false, "version": "4.17.21", "ecosystem": "npm" }, { "name": "lodash.camelcase", "direct": false, "version": "4.3.0", "ecosystem": "npm" }, { "name": "lodash.clonedeep", "direct": false, "version": "4.5.0", "ecosystem": "npm" }, { "name": "lodash.merge", "direct": false, "version": "4.6.2", "ecosystem": "npm" }, { "name": "lodash.zip", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "log-update", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "loglevel", "direct": false, "version": "1.9.2", "ecosystem": "npm" }, { "name": "loglevel-plugin-prefix", "direct": false, "version": "0.8.4", "ecosystem": "npm" }, { "name": "lower-case", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "lowercase-keys", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "lru-cache", "direct": false, "version": "10.4.3", "ecosystem": "npm" }, { "name": "lru-cache", "direct": false, "version": "7.18.3", "ecosystem": "npm" }, { "name": "lru-cache", "direct": false, "version": "8.0.5", "ecosystem": "npm" }, { "name": "magic-string", "direct": false, "version": "0.25.9", "ecosystem": "npm" }, { "name": "make-dir", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "marky", "direct": false, "version": "1.3.0", "ecosystem": "npm" }, { "name": "math-intrinsics", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "media-typer", "direct": false, "version": "0.3.0", "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": "mime-db", "direct": false, "version": "1.52.0", "ecosystem": "npm" }, { "name": "mime-types", "direct": false, "version": "2.1.35", "ecosystem": "npm" }, { "name": "mimic-fn", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "mimic-response", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "mimic-response", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "minimalistic-assert", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "minimatch", "direct": false, "version": "3.1.2", "ecosystem": "npm" }, { "name": "minimatch", "direct": false, "version": "5.1.9", "ecosystem": "npm" }, { "name": "minimatch", "direct": false, "version": "9.0.9", "ecosystem": "npm" }, { "name": "minimist", "direct": false, "version": "1.2.8", "ecosystem": "npm" }, { "name": "minipass", "direct": false, "version": "7.1.3", "ecosystem": "npm" }, { "name": "mitt", "direct": false, "version": "3.0.1", "ecosystem": "npm" }, { "name": "mkdirp", "direct": false, "version": "0.5.6", "ecosystem": "npm" }, { "name": "mkdirp", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "mock-socket", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "mock-socket", "direct": false, "version": "^2.0.0", "ecosystem": "npm" }, { "name": "modern-tar", "direct": false, "version": "0.7.6", "ecosystem": "npm" }, { "name": "ms", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "ms", "direct": false, "version": "2.1.2", "ecosystem": "npm" }, { "name": "ms", "direct": false, "version": "2.1.3", "ecosystem": "npm" }, { "name": "nanocolors", "direct": false, "version": "0.2.13", "ecosystem": "npm" }, { "name": "nanoid", "direct": false, "version": "3.3.12", "ecosystem": "npm" }, { "name": "natural-compare", "direct": false, "version": "1.4.0", "ecosystem": "npm" }, { "name": "negotiator", "direct": false, "version": "0.6.3", "ecosystem": "npm" }, { "name": "netmask", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "no-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "node-watch", "direct": false, "version": "0.7.3", "ecosystem": "npm" }, { "name": "normalize-path", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "normalize-url", "direct": false, "version": "6.1.0", "ecosystem": "npm" }, { "name": "npm-run-path", "direct": false, "version": "4.0.1", "ecosystem": "npm" }, { "name": "nth-check", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "object-inspect", "direct": false, "version": "1.13.4", "ecosystem": "npm" }, { "name": "object-keys", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "object.assign", "direct": false, "version": "4.1.7", "ecosystem": "npm" }, { "name": "object.fromentries", "direct": false, "version": "2.0.8", "ecosystem": "npm" }, { "name": "object.groupby", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "object.values", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "on-finished", "direct": false, "version": "2.4.1", "ecosystem": "npm" }, { "name": "once", "direct": false, "version": "1.4.0", "ecosystem": "npm" }, { "name": "onetime", "direct": false, "version": "5.1.2", "ecosystem": "npm" }, { "name": "only", "direct": false, "version": "0.0.2", "ecosystem": "npm" }, { "name": "open", "direct": false, "version": "8.4.2", "ecosystem": "npm" }, { "name": "optionator", "direct": false, "version": "0.9.4", "ecosystem": "npm" }, { "name": "own-keys", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "p-cancelable", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "p-event", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "p-finally", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "p-limit", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "p-locate", "direct": false, "version": "5.0.0", "ecosystem": "npm" }, { "name": "p-timeout", "direct": false, "version": "3.2.0", "ecosystem": "npm" }, { "name": "pac-proxy-agent", "direct": false, "version": "7.2.0", "ecosystem": "npm" }, { "name": "pac-resolver", "direct": false, "version": "7.0.1", "ecosystem": "npm" }, { "name": "package-json-from-dist", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "pako", "direct": false, "version": "1.0.11", "ecosystem": "npm" }, { "name": "param-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "parent-module", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "parse5", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "parse5", "direct": false, "version": "7.3.0", "ecosystem": "npm" }, { "name": "parse5-htmlparser2-tree-adapter", "direct": false, "version": "7.1.0", "ecosystem": "npm" }, { "name": "parse5-parser-stream", "direct": false, "version": "7.1.2", "ecosystem": "npm" }, { "name": "parseurl", "direct": false, "version": "1.3.3", "ecosystem": "npm" }, { "name": "pascal-case", "direct": false, "version": "3.1.2", "ecosystem": "npm" }, { "name": "path-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "path-exists", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "path-expression-matcher", "direct": false, "version": "1.5.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-scurry", "direct": false, "version": "1.11.1", "ecosystem": "npm" }, { "name": "path-type", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "pend", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "picomatch", "direct": false, "version": "2.3.1", "ecosystem": "npm" }, { "name": "picomatch", "direct": false, "version": "4.0.4", "ecosystem": "npm" }, { "name": "portfinder", "direct": false, "version": "1.0.38", "ecosystem": "npm" }, { "name": "possible-typed-array-names", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "prelude-ls", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "process", "direct": false, "version": "0.11.10", "ecosystem": "npm" }, { "name": "process-nextick-args", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "progress", "direct": false, "version": "2.0.3", "ecosystem": "npm" }, { "name": "proxy-agent", "direct": false, "version": "6.5.0", "ecosystem": "npm" }, { "name": "proxy-from-env", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "pump", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "punycode", "direct": false, "version": "2.3.0", "ecosystem": "npm" }, { "name": "punycode", "direct": false, "version": "2.3.1", "ecosystem": "npm" }, { "name": "puppeteer-core", "direct": false, "version": "24.43.1", "ecosystem": "npm" }, { "name": "qs", "direct": false, "version": "6.11.0", "ecosystem": "npm" }, { "name": "query-selector-shadow-dom", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "query-string", "direct": false, "version": "7.1.3", "ecosystem": "npm" }, { "name": "queue-microtask", "direct": false, "version": "1.2.3", "ecosystem": "npm" }, { "name": "quick-lru", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "qunit", "direct": false, "version": "2.26.0", "ecosystem": "npm" }, { "name": "qunit", "direct": false, "version": "^2.20.0", "ecosystem": "npm" }, { "name": "randombytes", "direct": false, "version": "2.1.0", "ecosystem": "npm" }, { "name": "raw-body", "direct": false, "version": "2.5.2", "ecosystem": "npm" }, { "name": "readable-stream", "direct": false, "version": "2.3.8", "ecosystem": "npm" }, { "name": "readable-stream", "direct": false, "version": "4.7.0", "ecosystem": "npm" }, { "name": "readdir-glob", "direct": false, "version": "1.1.3", "ecosystem": "npm" }, { "name": "readdirp", "direct": false, "version": "4.1.2", "ecosystem": "npm" }, { "name": "reflect.getprototypeof", "direct": false, "version": "1.0.10", "ecosystem": "npm" }, { "name": "regexp.prototype.flags", "direct": false, "version": "1.5.4", "ecosystem": "npm" }, { "name": "require-directory", "direct": false, "version": "2.1.1", "ecosystem": "npm" }, { "name": "resolve", "direct": false, "version": "1.22.2", "ecosystem": "npm" }, { "name": "resolve", "direct": false, "version": "1.22.8", "ecosystem": "npm" }, { "name": "resolve-alpn", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "resolve-from", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "resolve-path", "direct": false, "version": "1.4.0", "ecosystem": "npm" }, { "name": "responselike", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "resq", "direct": false, "version": "1.11.0", "ecosystem": "npm" }, { "name": "restore-cursor", "direct": false, "version": "3.1.0", "ecosystem": "npm" }, { "name": "ret", "direct": false, "version": "0.5.0", "ecosystem": "npm" }, { "name": "reusify", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "rgb2hex", "direct": false, "version": "0.2.5", "ecosystem": "npm" }, { "name": "rollup", "direct": false, "version": "2.79.1", "ecosystem": "npm" }, { "name": "rollup", "direct": false, "version": "4.61.1", "ecosystem": "npm" }, { "name": "rollup", "direct": false, "version": "^2.35.1", "ecosystem": "npm" }, { "name": "rollup-plugin-terser", "direct": false, "version": "7.0.2", "ecosystem": "npm" }, { "name": "rollup-plugin-terser", "direct": false, "version": "^7.0.2", "ecosystem": "npm" }, { "name": "run-parallel", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "safaridriver", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "safe-array-concat", "direct": false, "version": "1.1.3", "ecosystem": "npm" }, { "name": "safe-buffer", "direct": false, "version": "5.1.2", "ecosystem": "npm" }, { "name": "safe-buffer", "direct": false, "version": "5.2.1", "ecosystem": "npm" }, { "name": "safe-push-apply", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "safe-regex-test", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "safe-regex2", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "safer-buffer", "direct": false, "version": "2.1.2", "ecosystem": "npm" }, { "name": "saucelabs", "direct": false, "version": "9.0.2", "ecosystem": "npm" }, { "name": "semver", "direct": false, "version": "6.3.1", "ecosystem": "npm" }, { "name": "semver", "direct": false, "version": "7.8.4", "ecosystem": "npm" }, { "name": "sentence-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "serialize-error", "direct": false, "version": "12.0.0", "ecosystem": "npm" }, { "name": "serialize-javascript", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "set-function-length", "direct": false, "version": "1.2.2", "ecosystem": "npm" }, { "name": "set-function-name", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "set-proto", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "setimmediate", "direct": false, "version": "1.0.5", "ecosystem": "npm" }, { "name": "setprototypeof", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "setprototypeof", "direct": false, "version": "1.2.0", "ecosystem": "npm" }, { "name": "shebang-command", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "shebang-regex", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "side-channel", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "side-channel-list", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "side-channel-map", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "side-channel-weakmap", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "signal-exit", "direct": false, "version": "3.0.7", "ecosystem": "npm" }, { "name": "signal-exit", "direct": false, "version": "4.1.0", "ecosystem": "npm" }, { "name": "slash", "direct": false, "version": "3.0.0", "ecosystem": "npm" }, { "name": "slice-ansi", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "smart-buffer", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "snake-case", "direct": false, "version": "3.0.4", "ecosystem": "npm" }, { "name": "socks", "direct": false, "version": "2.8.9", "ecosystem": "npm" }, { "name": "socks-proxy-agent", "direct": false, "version": "8.0.5", "ecosystem": "npm" }, { "name": "source-map", "direct": false, "version": "0.6.1", "ecosystem": "npm" }, { "name": "source-map", "direct": false, "version": "0.7.6", "ecosystem": "npm" }, { "name": "source-map-support", "direct": false, "version": "0.5.21", "ecosystem": "npm" }, { "name": "sourcemap-codec", "direct": false, "version": "1.4.8", "ecosystem": "npm" }, { "name": "spacetrim", "direct": false, "version": "0.11.59", "ecosystem": "npm" }, { "name": "split-on-first", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "split2", "direct": false, "version": "4.2.0", "ecosystem": "npm" }, { "name": "statuses", "direct": false, "version": "1.5.0", "ecosystem": "npm" }, { "name": "statuses", "direct": false, "version": "2.0.1", "ecosystem": "npm" }, { "name": "stop-iteration-iterator", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "streamifier", "direct": false, "version": "0.1.1", "ecosystem": "npm" }, { "name": "streamx", "direct": false, "version": "2.27.0", "ecosystem": "npm" }, { "name": "strict-uri-encode", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "string-width", "direct": false, "version": "4.2.3", "ecosystem": "npm" }, { "name": "string-width", "direct": false, "version": "5.1.2", "ecosystem": "npm" }, { "name": "string-width-cjs", "direct": false, "version": "4.2.3", "ecosystem": "npm" }, { "name": "string.prototype.trim", "direct": false, "version": "1.2.10", "ecosystem": "npm" }, { "name": "string.prototype.trimend", "direct": false, "version": "1.0.9", "ecosystem": "npm" }, { "name": "string.prototype.trimstart", "direct": false, "version": "1.0.8", "ecosystem": "npm" }, { "name": "string_decoder", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "string_decoder", "direct": false, "version": "1.3.0", "ecosystem": "npm" }, { "name": "strip-ansi", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "strip-ansi", "direct": false, "version": "7.2.0", "ecosystem": "npm" }, { "name": "strip-ansi-cjs", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "strip-bom", "direct": false, "version": "3.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": "strnum", "direct": false, "version": "2.4.0", "ecosystem": "npm" }, { "name": "supports-color", "direct": false, "version": "5.5.0", "ecosystem": "npm" }, { "name": "supports-color", "direct": false, "version": "7.2.0", "ecosystem": "npm" }, { "name": "supports-preserve-symlinks-flag", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "table-layout", "direct": false, "version": "4.1.1", "ecosystem": "npm" }, { "name": "tar-fs", "direct": false, "version": "3.1.2", "ecosystem": "npm" }, { "name": "tar-stream", "direct": false, "version": "1.6.2", "ecosystem": "npm" }, { "name": "tar-stream", "direct": false, "version": "3.2.0", "ecosystem": "npm" }, { "name": "teex", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "terser", "direct": false, "version": "5.18.2", "ecosystem": "npm" }, { "name": "text-decoder", "direct": false, "version": "1.2.7", "ecosystem": "npm" }, { "name": "tiny-glob", "direct": false, "version": "0.2.9", "ecosystem": "npm" }, { "name": "to-buffer", "direct": false, "version": "1.2.2", "ecosystem": "npm" }, { "name": "to-regex-range", "direct": false, "version": "5.0.1", "ecosystem": "npm" }, { "name": "toidentifier", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "tr46", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "trix", "direct": false, "version": "2.0.5", "ecosystem": "npm" }, { "name": "trix", "direct": false, "version": "^2.0.0", "ecosystem": "npm" }, { "name": "tsconfig-paths", "direct": false, "version": "3.15.0", "ecosystem": "npm" }, { "name": "tslib", "direct": false, "version": "2.8.1", "ecosystem": "npm" }, { "name": "tsscmp", "direct": false, "version": "1.0.6", "ecosystem": "npm" }, { "name": "tunnel", "direct": false, "version": "0.0.6", "ecosystem": "npm" }, { "name": "type-check", "direct": false, "version": "0.4.0", "ecosystem": "npm" }, { "name": "type-fest", "direct": false, "version": "0.21.3", "ecosystem": "npm" }, { "name": "type-fest", "direct": false, "version": "4.26.0", "ecosystem": "npm" }, { "name": "type-fest", "direct": false, "version": "4.41.0", "ecosystem": "npm" }, { "name": "type-is", "direct": false, "version": "1.6.18", "ecosystem": "npm" }, { "name": "typed-array-buffer", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "typed-array-byte-length", "direct": false, "version": "1.0.3", "ecosystem": "npm" }, { "name": "typed-array-byte-offset", "direct": false, "version": "1.0.4", "ecosystem": "npm" }, { "name": "typed-array-length", "direct": false, "version": "1.0.7", "ecosystem": "npm" }, { "name": "typed-query-selector", "direct": false, "version": "2.12.2", "ecosystem": "npm" }, { "name": "typical", "direct": false, "version": "4.0.0", "ecosystem": "npm" }, { "name": "typical", "direct": false, "version": "7.3.0", "ecosystem": "npm" }, { "name": "unbox-primitive", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "undici", "direct": false, "version": "6.26.0", "ecosystem": "npm" }, { "name": "undici", "direct": false, "version": "7.27.2", "ecosystem": "npm" }, { "name": "undici-types", "direct": false, "version": "6.21.0", "ecosystem": "npm" }, { "name": "unpipe", "direct": false, "version": "1.0.0", "ecosystem": "npm" }, { "name": "upper-case", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "upper-case-first", "direct": false, "version": "2.0.2", "ecosystem": "npm" }, { "name": "uri-js", "direct": false, "version": "4.4.1", "ecosystem": "npm" }, { "name": "urijs", "direct": false, "version": "1.17.1", "ecosystem": "npm" }, { "name": "urlpattern-polyfill", "direct": false, "version": "10.1.0", "ecosystem": "npm" }, { "name": "userhome", "direct": false, "version": "1.0.1", "ecosystem": "npm" }, { "name": "util-deprecate", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "v8-to-istanbul", "direct": false, "version": "9.3.0", "ecosystem": "npm" }, { "name": "vary", "direct": false, "version": "1.1.2", "ecosystem": "npm" }, { "name": "wait-port", "direct": false, "version": "1.1.0", "ecosystem": "npm" }, { "name": "web-test-runner-qunit", "direct": false, "version": "2.0.0", "ecosystem": "npm" }, { "name": "web-test-runner-qunit", "direct": false, "version": "^2.0.0", "ecosystem": "npm" }, { "name": "webdriver", "direct": false, "version": "9.28.0", "ecosystem": "npm" }, { "name": "webdriver-bidi-protocol", "direct": false, "version": "0.4.1", "ecosystem": "npm" }, { "name": "webdriverio", "direct": false, "version": "9.28.0", "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": "which", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "which-boxed-primitive", "direct": false, "version": "1.1.1", "ecosystem": "npm" }, { "name": "which-builtin-type", "direct": false, "version": "1.2.1", "ecosystem": "npm" }, { "name": "which-collection", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "which-typed-array", "direct": false, "version": "1.1.19", "ecosystem": "npm" }, { "name": "word-wrap", "direct": false, "version": "1.2.5", "ecosystem": "npm" }, { "name": "wordwrapjs", "direct": false, "version": "5.1.1", "ecosystem": "npm" }, { "name": "wrap-ansi", "direct": false, "version": "6.2.0", "ecosystem": "npm" }, { "name": "wrap-ansi", "direct": false, "version": "7.0.0", "ecosystem": "npm" }, { "name": "wrap-ansi", "direct": false, "version": "8.1.0", "ecosystem": "npm" }, { "name": "wrap-ansi-cjs", "direct": false, "version": "7.0.0", "ecosystem": "npm" }, { "name": "wrappy", "direct": false, "version": "1.0.2", "ecosystem": "npm" }, { "name": "ws", "direct": false, "version": "7.5.11", "ecosystem": "npm" }, { "name": "ws", "direct": false, "version": "8.21.0", "ecosystem": "npm" }, { "name": "xml-naming", "direct": false, "version": "0.1.0", "ecosystem": "npm" }, { "name": "xtend", "direct": false, "version": "4.0.2", "ecosystem": "npm" }, { "name": "y18n", "direct": false, "version": "5.0.8", "ecosystem": "npm" }, { "name": "yargs", "direct": false, "version": "17.7.2", "ecosystem": "npm" }, { "name": "yargs-parser", "direct": false, "version": "21.1.1", "ecosystem": "npm" }, { "name": "yauzl", "direct": false, "version": "2.10.0", "ecosystem": "npm" }, { "name": "yazl", "direct": false, "version": "2.5.1", "ecosystem": "npm" }, { "name": "ylru", "direct": false, "version": "1.4.0", "ecosystem": "npm" }, { "name": "yocto-queue", "direct": false, "version": "0.1.0", "ecosystem": "npm" }, { "name": "zip-stream", "direct": false, "version": "6.0.1", "ecosystem": "npm" }, { "name": "zod", "direct": false, "version": "3.25.76", "ecosystem": "npm" }, { "name": "action_text-trix", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "action_text-trix", "direct": false, "version": "2.1.16", "ecosystem": "rubygems" }, { "name": "addressable", "direct": false, "version": "2.8.7", "ecosystem": "rubygems" }, { "name": "amq-protocol", "direct": false, "version": "2.3.2", "ecosystem": "rubygems" }, { "name": "ast", "direct": false, "version": "2.4.2", "ecosystem": "rubygems" }, { "name": "aws-eventstream", "direct": false, "version": "1.4.0", "ecosystem": "rubygems" }, { "name": "aws-partitions", "direct": false, "version": "1.1150.0", "ecosystem": "rubygems" }, { "name": "aws-sdk-core", "direct": false, "version": "3.230.0", "ecosystem": "rubygems" }, { "name": "aws-sdk-kms", "direct": false, "version": "1.110.0", "ecosystem": "rubygems" }, { "name": "aws-sigv4", "direct": false, "version": "1.12.1", "ecosystem": "rubygems" }, { "name": "base64", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "base64", "direct": false, "version": "0.3.0", "ecosystem": "rubygems" }, { "name": "bcrypt_pbkdf", "direct": false, "version": "1.1.1", "ecosystem": "rubygems" }, { "name": "beaneater", "direct": false, "version": "1.1.3", "ecosystem": "rubygems" }, { "name": "bigdecimal", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "bigdecimal", "direct": false, "version": "4.1.2", "ecosystem": "rubygems" }, { "name": "bindex", "direct": false, "version": "0.8.1", "ecosystem": "rubygems" }, { "name": "builder", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "builder", "direct": false, "version": "3.3.0", "ecosystem": "rubygems" }, { "name": "bundler", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "bunny", "direct": false, "version": "2.23.0", "ecosystem": "rubygems" }, { "name": "byebug", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "chef-utils", "direct": false, "version": "18.6.2", "ecosystem": "rubygems" }, { "name": "childprocess", "direct": false, "version": "5.1.0", "ecosystem": "rubygems" }, { "name": "chromedriver-helper", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "concurrent-ruby", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "concurrent-ruby", "direct": false, "version": "1.3.6", "ecosystem": "rubygems" }, { "name": "crack", "direct": false, "version": "1.0.0", "ecosystem": "rubygems" }, { "name": "crass", "direct": false, "version": "1.0.6", "ecosystem": "rubygems" }, { "name": "dante", "direct": false, "version": "0.2.0", "ecosystem": "rubygems" }, { "name": "date", "direct": false, "version": "3.4.1", "ecosystem": "rubygems" }, { "name": "debug", "direct": false, "version": "1.10.0", "ecosystem": "rubygems" }, { "name": "declarative", "direct": false, "version": "0.0.20", "ecosystem": "rubygems" }, { "name": "digest-crc", "direct": false, "version": "0.6.5", "ecosystem": "rubygems" }, { "name": "dotenv", "direct": false, "version": "3.1.7", "ecosystem": "rubygems" }, { "name": "drb", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "drb", "direct": false, "version": "2.2.3", "ecosystem": "rubygems" }, { "name": "ed25519", "direct": false, "version": "1.3.0", "ecosystem": "rubygems" }, { "name": "erb", "direct": false, "version": "5.1.1", "ecosystem": "rubygems" }, { "name": "erubi", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "erubi", "direct": false, "version": "1.13.1", "ecosystem": "rubygems" }, { "name": "et-orbi", "direct": false, "version": "1.2.11", "ecosystem": "rubygems" }, { "name": "event_emitter", "direct": false, "version": "0.2.6", "ecosystem": "rubygems" }, { "name": "execjs", "direct": false, "version": "2.10.0", "ecosystem": "rubygems" }, { "name": "faraday", "direct": false, "version": "2.14.0", "ecosystem": "rubygems" }, { "name": "faraday-net_http", "direct": false, "version": "3.4.2", "ecosystem": "rubygems" }, { "name": "ffi", "direct": false, "version": "1.17.1", "ecosystem": "rubygems" }, { "name": "ffi-compiler", "direct": false, "version": "1.3.2", "ecosystem": "rubygems" }, { "name": "fugit", "direct": false, "version": "1.11.1", "ecosystem": "rubygems" }, { "name": "globalid", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "globalid", "direct": false, "version": "1.4.0", "ecosystem": "rubygems" }, { "name": "google-apis-core", "direct": false, "version": "0.15.1", "ecosystem": "rubygems" }, { "name": "google-apis-iamcredentials_v1", "direct": false, "version": "0.22.0", "ecosystem": "rubygems" }, { "name": "google-apis-storage_v1", "direct": false, "version": "0.49.0", "ecosystem": "rubygems" }, { "name": "google-cloud-core", "direct": false, "version": "1.7.1", "ecosystem": "rubygems" }, { "name": "google-cloud-env", "direct": false, "version": "2.2.1", "ecosystem": "rubygems" }, { "name": "google-cloud-errors", "direct": false, "version": "1.4.0", "ecosystem": "rubygems" }, { "name": "google-logging-utils", "direct": false, "version": "0.1.0", "ecosystem": "rubygems" }, { "name": "google-protobuf", "direct": false, "version": "4.29.3", "ecosystem": "rubygems" }, { "name": "googleauth", "direct": false, "version": "1.12.2", "ecosystem": "rubygems" }, { "name": "hashdiff", "direct": false, "version": "1.1.2", "ecosystem": "rubygems" }, { "name": "httpclient", "direct": false, "version": "2.9.0", "ecosystem": "rubygems" }, { "name": "i18n", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "i18n", "direct": false, "version": "1.14.8", "ecosystem": "rubygems" }, { "name": "io-console", "direct": false, "version": "0.8.1", "ecosystem": "rubygems" }, { "name": "irb", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "irb", "direct": false, "version": "1.15.2", "ecosystem": "rubygems" }, { "name": "jmespath", "direct": false, "version": "1.6.2", "ecosystem": "rubygems" }, { "name": "jwt", "direct": false, "version": "2.10.1", "ecosystem": "rubygems" }, { "name": "kramdown", "direct": false, "version": "2.5.1", "ecosystem": "rubygems" }, { "name": "kramdown-parser-gfm", "direct": false, "version": "1.1.0", "ecosystem": "rubygems" }, { "name": "language_server-protocol", "direct": false, "version": "3.17.0.3", "ecosystem": "rubygems" }, { "name": "lint_roller", "direct": false, "version": "1.1.0", "ecosystem": "rubygems" }, { "name": "logger", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "logger", "direct": false, "version": "1.7.0", "ecosystem": "rubygems" }, { "name": "loofah", "direct": false, "version": "2.25.0", "ecosystem": "rubygems" }, { "name": "mail", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "mail", "direct": false, "version": "2.8.1", "ecosystem": "rubygems" }, { "name": "marcel", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "marcel", "direct": false, "version": "1.2.1", "ecosystem": "rubygems" }, { "name": "matrix", "direct": false, "version": "0.4.2", "ecosystem": "rubygems" }, { "name": "mini_mime", "direct": false, "version": "1.1.5", "ecosystem": "rubygems" }, { "name": "mini_portile2", "direct": false, "version": "2.8.9", "ecosystem": "rubygems" }, { "name": "minitest-retry", "direct": false, "version": "0.2.3", "ecosystem": "rubygems" }, { "name": "mixlib-cli", "direct": false, "version": "2.1.8", "ecosystem": "rubygems" }, { "name": "mixlib-config", "direct": false, "version": "3.0.27", "ecosystem": "rubygems" }, { "name": "mixlib-shellout", "direct": false, "version": "3.3.4", "ecosystem": "rubygems" }, { "name": "mono_logger", "direct": false, "version": "1.1.2", "ecosystem": "rubygems" }, { "name": "multi_json", "direct": false, "version": "1.15.0", "ecosystem": "rubygems" }, { "name": "mustermann", "direct": false, "version": "3.0.4", "ecosystem": "rubygems" }, { "name": "mutex_m", "direct": false, "version": "0.3.0", "ecosystem": "rubygems" }, { "name": "net-http", "direct": false, "version": "0.6.0", "ecosystem": "rubygems" }, { "name": "net-http", "direct": false, "version": "0.9.1", "ecosystem": "rubygems" }, { "name": "net-imap", "direct": false, "version": "0.5.5", "ecosystem": "rubygems" }, { "name": "net-pop", "direct": false, "version": "0.1.2", "ecosystem": "rubygems" }, { "name": "net-protocol", "direct": false, "version": "0.2.2", "ecosystem": "rubygems" }, { "name": "net-scp", "direct": false, "version": "4.0.0", "ecosystem": "rubygems" }, { "name": "net-sftp", "direct": false, "version": "4.0.0", "ecosystem": "rubygems" }, { "name": "net-smtp", "direct": false, "version": "0.5.1", "ecosystem": "rubygems" }, { "name": "net-ssh", "direct": false, "version": "7.3.0", "ecosystem": "rubygems" }, { "name": "nio4r", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "nio4r", "direct": false, "version": "2.7.4", "ecosystem": "rubygems" }, { "name": "os", "direct": false, "version": "1.1.4", "ecosystem": "rubygems" }, { "name": "ostruct", "direct": false, "version": "0.6.1", "ecosystem": "rubygems" }, { "name": "parallel", "direct": false, "version": "1.26.3", "ecosystem": "rubygems" }, { "name": "parser", "direct": false, "version": "3.3.9.0", "ecosystem": "rubygems" }, { "name": "pp", "direct": false, "version": "0.6.2", "ecosystem": "rubygems" }, { "name": "prettyprint", "direct": false, "version": "0.2.0", "ecosystem": "rubygems" }, { "name": "protobug", "direct": false, "version": "0.1.0", "ecosystem": "rubygems" }, { "name": "protobug_googleapis_field_behavior_protos", "direct": false, "version": "0.1.0", "ecosystem": "rubygems" }, { "name": "protobug_sigstore_protos", "direct": false, "version": "0.1.0", "ecosystem": "rubygems" }, { "name": "protobug_well_known_protos", "direct": false, "version": "0.1.0", "ecosystem": "rubygems" }, { "name": "psych", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "psych", "direct": false, "version": "5.2.6", "ecosystem": "rubygems" }, { "name": "public_suffix", "direct": false, "version": "6.0.1", "ecosystem": "rubygems" }, { "name": "raabro", "direct": false, "version": "1.4.0", "ecosystem": "rubygems" }, { "name": "racc", "direct": false, "version": "1.8.1", "ecosystem": "rubygems" }, { "name": "rack-protection", "direct": false, "version": "4.1.1", "ecosystem": "rubygems" }, { "name": "rack-session", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rack-session", "direct": false, "version": "2.1.1", "ecosystem": "rubygems" }, { "name": "rack-test", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rack-test", "direct": false, "version": "2.2.0", "ecosystem": "rubygems" }, { "name": "rackup", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rackup", "direct": false, "version": "2.2.1", "ecosystem": "rubygems" }, { "name": "ractor-dispatch", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "ractor-dispatch", "direct": false, "version": "0.2.0", "ecosystem": "rubygems" }, { "name": "rails-dom-testing", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rails-dom-testing", "direct": false, "version": "2.3.0", "ecosystem": "rubygems" }, { "name": "rails-html-sanitizer", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rails-html-sanitizer", "direct": false, "version": "1.7.0", "ecosystem": "rubygems" }, { "name": "rainbow", "direct": false, "version": "3.1.1", "ecosystem": "rubygems" }, { "name": "rake", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "rake", "direct": false, "version": "13.2.1", "ecosystem": "rubygems" }, { "name": "rake", "direct": false, "version": "13.3.0", "ecosystem": "rubygems" }, { "name": "rb-fsevent", "direct": false, "version": "0.11.2", "ecosystem": "rubygems" }, { "name": "rb-inotify", "direct": false, "version": "0.11.1", "ecosystem": "rubygems" }, { "name": "rbtree", "direct": false, "version": "0.4.7", "ecosystem": "rubygems" }, { "name": "rdoc", "direct": false, "version": "6.15.0", "ecosystem": "rubygems" }, { "name": "regexp_parser", "direct": false, "version": "2.10.0", "ecosystem": "rubygems" }, { "name": "reline", "direct": false, "version": "0.6.1", "ecosystem": "rubygems" }, { "name": "representable", "direct": false, "version": "3.2.0", "ecosystem": "rubygems" }, { "name": "retriable", "direct": false, "version": "3.1.2", "ecosystem": "rubygems" }, { "name": "rubocop-ast", "direct": false, "version": "1.46.0", "ecosystem": "rubygems" }, { "name": "ruby-progressbar", "direct": false, "version": "1.13.0", "ecosystem": "rubygems" }, { "name": "ruby2_keywords", "direct": false, "version": "0.0.5", "ecosystem": "rubygems" }, { "name": "rufus-scheduler", "direct": false, "version": "3.9.2", "ecosystem": "rubygems" }, { "name": "sass-embedded", "direct": false, "version": "1.83.4", "ecosystem": "rubygems" }, { "name": "securerandom", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "securerandom", "direct": false, "version": "0.4.1", "ecosystem": "rubygems" }, { "name": "serverengine", "direct": false, "version": "2.0.7", "ecosystem": "rubygems" }, { "name": "set", "direct": false, "version": "1.1.2", "ecosystem": "rubygems" }, { "name": "sigdump", "direct": false, "version": "0.2.5", "ecosystem": "rubygems" }, { "name": "signet", "direct": false, "version": "0.19.0", "ecosystem": "rubygems" }, { "name": "sigstore", "direct": false, "version": "0.2.2", "ecosystem": "rubygems" }, { "name": "sigstore-cli", "direct": false, "version": "0.2.2", "ecosystem": "rubygems" }, { "name": "sinatra", "direct": false, "version": "4.1.1", "ecosystem": "rubygems" }, { "name": "sorted_set", "direct": false, "version": "1.0.3", "ecosystem": "rubygems" }, { "name": "spring", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "spring-watcher-listen", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "sprockets", "direct": false, "version": "4.2.1", "ecosystem": "rubygems" }, { "name": "sshkit", "direct": false, "version": "1.23.2", "ecosystem": "rubygems" }, { "name": "stackprof", "direct": false, "version": "0.2.28", "ecosystem": "rubygems" }, { "name": "stringio", "direct": false, "version": "3.1.7", "ecosystem": "rubygems" }, { "name": "tailwindcss-ruby", "direct": false, "version": "3.4.17", "ecosystem": "rubygems" }, { "name": "thor", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "thor", "direct": false, "version": "1.3.2", "ecosystem": "rubygems" }, { "name": "thor", "direct": false, "version": "1.4.0", "ecosystem": "rubygems" }, { "name": "tilt", "direct": false, "version": "2.6.1", "ecosystem": "rubygems" }, { "name": "timeout", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "timeout", "direct": false, "version": "0.4.3", "ecosystem": "rubygems" }, { "name": "tomlrb", "direct": false, "version": "2.0.3", "ecosystem": "rubygems" }, { "name": "trailblazer-option", "direct": false, "version": "0.1.2", "ecosystem": "rubygems" }, { "name": "tsort", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "tsort", "direct": false, "version": "0.2.0", "ecosystem": "rubygems" }, { "name": "tzinfo", "direct": false, "version": null, "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": "3.1.4", "ecosystem": "rubygems" }, { "name": "unicode-emoji", "direct": false, "version": "4.2.0", "ecosystem": "rubygems" }, { "name": "websocket", "direct": false, "version": "1.2.11", "ecosystem": "rubygems" }, { "name": "websocket-driver", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "websocket-driver", "direct": false, "version": "0.7.7", "ecosystem": "rubygems" }, { "name": "websocket-extensions", "direct": false, "version": "0.1.5", "ecosystem": "rubygems" }, { "name": "xpath", "direct": false, "version": "3.2.0", "ecosystem": "rubygems" }, { "name": "zeitwerk", "direct": false, "version": null, "ecosystem": "rubygems" }, { "name": "zeitwerk", "direct": false, "version": "2.7.3", "ecosystem": "rubygems" } ], "collected": true, "truncated": false, "total_count": 1056, "direct_count": 97, "indirect_count": 959 } }, "maintainership": { "issues": { "open_prs": 1078, "merged_prs": 26641, "open_issues": 477, "closed_ratio": 0.974, "closed_issues": 18148, "closed_unmerged_prs": 11319 }, "bus_factor": 10, "bot_contributors": 0, "top_contributors": [ { "type": "User", "login": "rafaelfranca", "commits": 9074, "avatar_url": "https://avatars.githubusercontent.com/u/47848?v=4" }, { "type": "User", "login": "tenderlove", "commits": 5321, "avatar_url": "https://avatars.githubusercontent.com/u/3124?v=4" }, { "type": "User", "login": "kamipo", "commits": 4216, "avatar_url": "https://avatars.githubusercontent.com/u/12642?v=4" }, { "type": "User", "login": "jeremy", "commits": 3757, "avatar_url": "https://avatars.githubusercontent.com/u/199?v=4" }, { "type": "User", "login": "byroot", "commits": 2866, "avatar_url": "https://avatars.githubusercontent.com/u/44640?v=4" }, { "type": "User", "login": "fxn", "commits": 2748, "avatar_url": "https://avatars.githubusercontent.com/u/3387?v=4" }, { "type": "User", "login": "josevalim", "commits": 2358, "avatar_url": "https://avatars.githubusercontent.com/u/9582?v=4" }, { "type": "User", "login": "eileencodes", "commits": 1985, "avatar_url": "https://avatars.githubusercontent.com/u/1080678?v=4" }, { "type": "User", "login": "senny", "commits": 1626, "avatar_url": "https://avatars.githubusercontent.com/u/5402?v=4" }, { "type": "User", "login": "carlosantoniodasilva", "commits": 1622, "avatar_url": "https://avatars.githubusercontent.com/u/26328?v=4" } ], "contributors_sampled": 100, "top_contributor_share": 0.129 }, "quality_signals": { "has_ci": true, "has_tests": true, "ci_workflows": [ "devcontainer-shellcheck.yml", "devcontainer-smoke-test.yml", "labeler.yml", "more-info-needed.yml", "rail_inspector.yml", "rails-new-docker.yml", "rails_releaser_tests.yml", "release.yml", "stale.yml" ], "has_docs_dir": false, "linter_configs": [ ".rubocop.yml", "eslint.config.mjs" ], "has_editorconfig": false, "has_linter_config": true, "has_precommit_config": false }, "security_signals": { "lockfiles": [ "Gemfile.lock", "yarn.lock" ], "scorecard": { "checks": [ { "name": "Binary-Artifacts", "score": 10, "reason": "no binaries found in the repo", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts" }, { "name": "Branch-Protection", "score": 3, "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": "15 out of 15 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": 2, "reason": "badge detected: InProgress", "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 83 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": 0, "reason": "no update tool detected", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool" }, { "name": "Fuzzing", "score": 0, "reason": "project is not fuzzed", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing" }, { "name": "License", "score": 10, "reason": "license file detected", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license" }, { "name": "Maintained", "score": 10, "reason": "30 commit(s) and 4 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": 2, "reason": "dependency not pinned by hash detected -- score normalized to 2", "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": 10, "reason": "security policy file 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": 7, "reason": "detected GitHub workflow tokens with excessive permissions", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions" }, { "name": "Vulnerabilities", "score": 0, "reason": "113 existing vulnerabilities detected", "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities" } ], "commit": "964294f99bfcfc0131e73255db8b6620fd726f01", "ran_at": "2026-07-21T23:15:23Z", "aggregate_score": 5.8, "scorecard_version": "v5.5.0" }, "has_codeql_workflow": false, "has_security_policy": true, "has_dependabot_config": false }, "contribution_flow": { "collected": true, "ci_last_run_at": "2026-07-21T23:14:12Z", "oldest_open_prs": [ { "number": 37724, "created_at": "2019-11-15T00:53:54Z", "last_comment_at": "2024-04-28T06:23:01Z", "last_comment_author": "marckohlbrugge" }, { "number": 37807, "created_at": "2019-11-26T22:07:48Z", "last_comment_at": "2026-05-29T10:32:40Z", "last_comment_author": "GermanDZ" }, { "number": 38146, "created_at": "2020-01-03T09:27:56Z", "last_comment_at": "2026-05-15T21:23:20Z", "last_comment_author": "rafaelfranca" }, { "number": 38721, "created_at": "2020-03-13T19:15:01Z", "last_comment_at": "2021-07-20T03:52:34Z", "last_comment_author": "chaffeqa" }, { "number": 39113, "created_at": "2020-05-02T09:25:14Z", "last_comment_at": "2025-11-13T20:04:10Z", "last_comment_author": "jagthedrummer" }, { "number": 39150, "created_at": "2020-05-05T05:33:01Z", "last_comment_at": "2022-03-06T04:18:32Z", "last_comment_author": "rails-bot" }, { "number": 39207, "created_at": "2020-05-09T14:19:33Z", "last_comment_at": "2021-07-12T10:48:12Z", "last_comment_author": "p8" }, { "number": 39299, "created_at": "2020-05-15T15:35:45Z", "last_comment_at": "2025-11-16T02:00:31Z", "last_comment_author": "nerijunior" }, { "number": 39445, "created_at": "2020-05-27T01:41:09Z", "last_comment_at": "2024-08-16T06:08:59Z", "last_comment_author": "lucianghinda" }, { "number": 39473, "created_at": "2020-05-29T15:03:43Z", "last_comment_at": "2022-01-24T03:35:47Z", "last_comment_author": "rails-bot" }, { "number": 39476, "created_at": "2020-05-29T19:01:22Z", "last_comment_at": "2021-06-01T01:20:36Z", "last_comment_author": "lfalcao" }, { "number": 39487, "created_at": "2020-05-30T23:15:22Z", "last_comment_at": "2022-04-20T21:18:48Z", "last_comment_author": "rails-bot" }, { "number": 39585, "created_at": "2020-06-10T05:08:19Z", "last_comment_at": "2024-07-01T05:07:30Z", "last_comment_author": "chrisandreae" }, { "number": 39623, "created_at": "2020-06-14T05:32:16Z", "last_comment_at": "2024-05-07T20:59:48Z", "last_comment_author": "collimarco" }, { "number": 39863, "created_at": "2020-07-17T14:24:10Z", "last_comment_at": "2025-03-17T17:23:29Z", "last_comment_author": "abdelbk" }, { "number": 40337, "created_at": "2020-10-05T18:27:44Z", "last_comment_at": "2023-12-23T23:07:31Z", "last_comment_author": "northeastprince" }, { "number": 40401, "created_at": "2020-10-16T16:51:21Z", "last_comment_at": "2023-04-22T01:37:05Z", "last_comment_author": "agrobbin" }, { "number": 40525, "created_at": "2020-11-03T18:06:08Z", "last_comment_at": "2025-12-22T22:21:23Z", "last_comment_author": "benjaaguila" }, { "number": 41004, "created_at": "2021-01-03T17:17:35Z", "last_comment_at": "2025-05-22T18:41:33Z", "last_comment_author": "james-caresnap" }, { "number": 41136, "created_at": "2021-01-16T01:58:42Z", "last_comment_at": "2022-01-24T07:36:29Z", "last_comment_author": "rails-bot" } ], "last_merged_pr_at": "2026-07-21T23:14:06Z", "ci_last_conclusion": null, "oldest_open_issues": [ { "number": 3508, "created_at": "2011-11-04T04:11:25Z", "last_comment_at": "2026-05-15T20:27:46Z", "last_comment_author": "github-actions" }, { "number": 7047, "created_at": "2012-07-13T18:30:14Z", "last_comment_at": "2020-11-03T03:46:56Z", "last_comment_author": "bobmazanec" }, { "number": 7218, "created_at": "2012-07-31T21:30:49Z", "last_comment_at": "2019-01-19T04:39:32Z", "last_comment_author": "sheldond" }, { "number": 12940, "created_at": "2013-11-18T17:04:55Z", "last_comment_at": "2023-11-16T05:43:24Z", "last_comment_author": "giovannism20" }, { "number": 13873, "created_at": "2014-01-29T16:29:44Z", "last_comment_at": "2021-05-18T03:01:33Z", "last_comment_author": "tbcooney" }, { "number": 14358, "created_at": "2014-03-12T12:03:50Z", "last_comment_at": "2024-06-16T19:02:24Z", "last_comment_author": "willianveiga" }, { "number": 14698, "created_at": "2014-04-11T02:30:50Z", "last_comment_at": "2023-10-09T19:54:57Z", "last_comment_author": "lcreid" }, { "number": 15097, "created_at": "2014-05-13T21:51:48Z", "last_comment_at": "2021-07-13T10:33:39Z", "last_comment_author": "p8" }, { "number": 15470, "created_at": "2014-06-02T16:24:57Z", "last_comment_at": "2021-07-11T20:18:00Z", "last_comment_author": "p8" }, { "number": 15589, "created_at": "2014-06-09T14:39:03Z", "last_comment_at": "2017-07-10T17:29:12Z", "last_comment_author": "Edouard-chin" }, { "number": 15854, "created_at": "2014-06-22T04:04:53Z", "last_comment_at": "2026-01-31T16:21:06Z", "last_comment_author": "eric1234" }, { "number": 16452, "created_at": "2014-08-10T18:35:37Z", "last_comment_at": "2026-02-05T02:30:53Z", "last_comment_author": "eric1234" }, { "number": 16823, "created_at": "2014-09-05T22:17:25Z", "last_comment_at": "2015-04-20T18:18:56Z", "last_comment_author": "al2o3cr" }, { "number": 17225, "created_at": "2014-10-10T04:54:28Z", "last_comment_at": "2019-07-01T22:19:04Z", "last_comment_author": "blairanderson" }, { "number": 17325, "created_at": "2014-10-19T17:58:52Z", "last_comment_at": "2022-11-16T05:56:16Z", "last_comment_author": "lazaronixon" }, { "number": 17466, "created_at": "2014-10-31T21:14:29Z", "last_comment_at": "2025-01-04T07:44:00Z", "last_comment_author": "joshuay03" }, { "number": 17599, "created_at": "2014-11-12T20:42:49Z", "last_comment_at": "2019-12-21T10:34:42Z", "last_comment_author": "arknamal" }, { "number": 17706, "created_at": "2014-11-21T20:05:24Z", "last_comment_at": "2023-03-17T14:47:49Z", "last_comment_author": "hrdwdmrbl" }, { "number": 17887, "created_at": "2014-12-02T20:27:25Z", "last_comment_at": "2016-04-07T16:56:34Z", "last_comment_author": "haruska" }, { "number": 18818, "created_at": "2015-02-05T04:15:45Z", "last_comment_at": "2022-09-07T18:31:06Z", "last_comment_author": "klondikemarlen" } ] } }, "config": { "disabled_metrics": [], "disabled_categories": [], "disabled_components": {} }, "source": { "url": "https://github.com/rails/rails", "host": "github.com", "name": "rails", "owner": "rails" }, "metrics": { "overall": { "key": "overall", "band": "excellent", "name": "Overall health", "note": null, "notes": [], "value": 86, "inputs": { "security": 66, "vitality": 96, "community": 97, "governance": 91, "engineering": 76 }, "components": [] }, "categories": [ { "key": "vitality", "band": "excellent", "name": "Vitality", "value": 96, "weight": 0.22, "metrics": [ { "key": "development_activity", "band": "excellent", "name": "Development activity", "note": null, "notes": [], "value": 100, "inputs": { "commits_last_year": 3266, "human_commit_share": 1, "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": "3266 commits in the last year", "points": 18, "status": "met", "details": [ { "code": "commits_last_year", "params": { "count": 3266 } } ], "max_points": 18 }, { "key": "openssf_scorecard_maintained", "name": "OpenSSF Scorecard: Maintained", "detail": "30 commit(s) and 4 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": 90, "inputs": { "releases_count": 100, "latest_release_tag": "v8.1.3", "releases_from_tags": false, "days_since_latest_release": 119, "mean_days_between_releases": 16.3 }, "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 119 days ago", "points": 27, "status": "partial", "details": [ { "code": "release_recency", "params": { "days": 119 } } ], "max_points": 36 }, { "key": "release_cadence", "name": "Release cadence", "detail": "a release every ~16.3 days", "points": 27, "status": "met", "details": [ { "code": "release_cadence", "params": { "gap": 16.3 } } ], "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": "excellent", "name": "Community & Adoption", "value": 97, "weight": 0.18, "metrics": [ { "key": "popularity", "band": "excellent", "name": "Popularity & adoption", "note": null, "notes": [], "value": 100, "inputs": { "forks": 22363, "stars": 58641, "watchers": 2334, "growth_state": "organic", "growth_factor_pct": 100 }, "components": [ { "key": "stars", "name": "Stars", "detail": "58,641 stars", "points": 60, "status": "met", "details": [ { "code": "stars", "params": { "count": 58641 } } ], "max_points": 60 }, { "key": "forks", "name": "Forks", "detail": "22,363 forks", "points": 25, "status": "met", "details": [ { "code": "forks", "params": { "count": 22363 } } ], "max_points": 25 }, { "key": "watchers", "name": "Watchers", "detail": "2,334 watchers", "points": 15, "status": "met", "details": [ { "code": "watchers", "params": { "count": 2334 } } ], "max_points": 15 } ] }, { "key": "community_health", "band": "excellent", "name": "Community health", "note": null, "notes": [], "value": 92, "inputs": { "has_readme": true, "has_license": true, "has_contributing": true, "has_issue_template": false, "has_code_of_conduct": true, "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": 18, "status": "met", "details": [], "max_points": 18 }, { "key": "code_of_conduct", "name": "Code of conduct", "detail": null, "points": 13.5, "status": "met", "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": [ "rails", "@rails/actiontext", "@rails/actioncable", "railties", "@rails/activestorage", "activejob", "actionpack", "actiontext" ], "dependents": null, "ecosystems": "npm, rubygems", "total_downloads": 3438251676, "monthly_downloads": 12634223 }, "components": [ { "key": "monthly_downloads", "name": "Monthly downloads", "detail": "12,634,223 downloads/month across npm, rubygems", "points": 80, "status": "met", "details": [ { "code": "downloads_monthly", "params": { "count": 12634223, "ecosystems": "npm, rubygems" } } ], "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": "excellent", "name": "Sustainability & Governance", "value": 91, "weight": 0.24, "metrics": [ { "key": "maintainer_resilience", "band": "excellent", "name": "Maintainer resilience (bus factor)", "note": null, "notes": [], "value": 97, "inputs": { "bus_factor": 10, "contributors_sampled": 100, "top_contributor_share": 0.129 }, "components": [ { "key": "bus_factor", "name": "Bus factor", "detail": "10 contributor(s) cover half of all commits", "points": 54, "status": "met", "details": [ { "code": "bus_factor", "params": { "count": 10 } } ], "max_points": 54 }, { "key": "commit_distribution", "name": "Commit distribution", "detail": "top contributor authored 13% of commits", "points": 19.6, "status": "partial", "details": [ { "code": "top_contributor_share", "params": { "share": 13 } } ], "max_points": 22.5 }, { "key": "contributor_breadth", "name": "Contributor breadth", "detail": "100 contributors", "points": 13.5, "status": "met", "details": [ { "code": "contributors_sampled", "params": { "count": 100 } } ], "max_points": 13.5 }, { "key": "openssf_scorecard_contributors", "name": "OpenSSF Scorecard: Contributors", "detail": "project has 83 contributing companies or organizations", "points": 10, "status": "met", "details": [], "max_points": 10 } ] }, { "key": "responsiveness", "band": "excellent", "name": "Issue & PR responsiveness", "note": null, "notes": [], "value": 87, "inputs": { "merged_prs": 26641, "open_issues": 477, "closed_issues": 18148, "issue_closed_ratio": 0.974, "closed_unmerged_prs": 11319 }, "components": [ { "key": "issue_resolution", "name": "Issue resolution", "detail": "97% of issues closed", "points": 45.5, "status": "partial", "details": [ { "code": "issues_closed_share", "params": { "share": 97 } } ], "max_points": 46.75 }, { "key": "pr_acceptance", "name": "PR acceptance", "detail": "26641/37960 decided PRs merged", "points": 26.8, "status": "partial", "details": [ { "code": "decided_prs_merged", "params": { "merged": 26641, "decided": 37960 } } ], "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": 80, "inputs": { "followers": 2680, "owner_type": "Organization", "is_verified": null, "owner_login": "rails", "public_repos": 127, "account_age_days": 6684 }, "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": "2,680 followers of rails", "points": 24.6, "status": "partial", "details": [ { "code": "owner_followers", "params": { "count": 2680, "login": "rails" } } ], "max_points": 25 }, { "key": "track_record", "name": "Track record", "detail": "127 public repos, account ~18 yr old", "points": 25, "status": "met", "details": [ { "code": "public_repos", "params": { "count": 127 } }, { "code": "account_age_years", "params": { "years": 18 } } ], "max_points": 25 } ] }, { "key": "package_maintenance", "band": "excellent", "name": "Package maintenance", "note": null, "notes": [], "value": 100, "inputs": { "packages": [ "rails", "@rails/actiontext", "@rails/actioncable", "railties", "@rails/activestorage", "activejob", "actionpack", "actiontext" ], "ecosystems": "npm, rubygems", "any_deprecated": false, "min_days_since_publish": 119 }, "components": [ { "key": "published_resolvable", "name": "Published & resolvable", "detail": "8 package(s) on npm, rubygems", "points": 25, "status": "met", "details": [ { "code": "packages_published", "params": { "count": 8, "ecosystems": "npm, rubygems" } } ], "max_points": 25 }, { "key": "publish_recency", "name": "Publish recency", "detail": "latest publish 119 days ago", "points": 35, "status": "met", "details": [ { "code": "publish_recency", "params": { "days": 119 } } ], "max_points": 35 }, { "key": "version_history", "name": "Version history", "detail": "516 published versions", "points": 20, "status": "met", "details": [ { "code": "published_versions", "params": { "count": 516 } } ], "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": "good", "name": "Engineering Quality", "value": 76, "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": "9 workflow(s)", "points": 24, "status": "met", "details": [ { "code": "ci_workflows", "params": { "count": 9 } } ], "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": ".rubocop.yml, eslint.config.mjs", "points": 16, "status": "met", "details": [ { "code": "file_list", "params": { "files": ".rubocop.yml, eslint.config.mjs" } } ], "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": "15 out of 15 merged PRs checked by a CI test -- score normalized to 10", "points": 20, "status": "met", "details": [], "max_points": 20 } ] }, { "key": "documentation", "band": "moderate", "name": "Documentation", "note": null, "notes": [], "value": 65, "inputs": { "topics": [ "rails", "mvc", "html", "activerecord", "activejob", "ruby", "framework" ], "has_wiki": false, "homepage": "https://rubyonrails.org", "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": "https://rubyonrails.org", "points": 15, "status": "met", "details": [], "max_points": 15 }, { "key": "repository_description", "name": "Repository description", "detail": null, "points": 10, "status": "met", "details": [], "max_points": 10 }, { "key": "topics", "name": "Topics", "detail": "7 topics", "points": 10, "status": "met", "details": [ { "code": "topics_count", "params": { "count": 7 } } ], "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": "moderate", "name": "Security", "value": 66, "weight": 0.16, "metrics": [ { "key": "security_posture", "band": "moderate", "name": "Security posture", "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.", "notes": [ { "code": "excluded_no_data", "params": { "components": [ "packaging", "signed_releases" ] } }, { "code": "weights_renormalized", "params": {} } ], "value": 58, "inputs": { "source": "openssf_scorecard", "checks_evaluated": 16, "scorecard_version": "v5.5.0", "checks_inconclusive": 2, "scorecard_aggregate": 5.8 }, "components": [ { "key": "binary_artifacts", "name": "Binary-Artifacts", "detail": "no binaries found in the repo", "points": 7.5, "status": "met", "details": [], "max_points": 7.5 }, { "key": "branch_protection", "name": "Branch-Protection", "detail": "branch protection is not maximal on development and all release branches", "points": 2.2, "status": "partial", "details": [], "max_points": 7.5 }, { "key": "ci_tests", "name": "CI-Tests", "detail": "15 out of 15 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": "badge detected: InProgress", "points": 0.5, "status": "partial", "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 83 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": "no update tool detected", "points": 0, "status": "missed", "details": [], "max_points": 7.5 }, { "key": "fuzzing", "name": "Fuzzing", "detail": "project is not fuzzed", "points": 0, "status": "missed", "details": [], "max_points": 5 }, { "key": "license", "name": "License", "detail": "license file detected", "points": 2.5, "status": "met", "details": [], "max_points": 2.5 }, { "key": "maintained", "name": "Maintained", "detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10", "points": 7.5, "status": "met", "details": [], "max_points": 7.5 }, { "key": "packaging", "name": "Packaging", "detail": "packaging workflow not detected", "points": 0, "status": "excluded", "details": [ { "code": "no_data", "params": {} } ], "max_points": 5 }, { "key": "pinned_dependencies", "name": "Pinned-Dependencies", "detail": "dependency not pinned by hash detected -- score normalized to 2", "points": 1, "status": "partial", "details": [], "max_points": 5 }, { "key": "sast", "name": "SAST", "detail": "SAST tool is not run on all commits -- score normalized to 0", "points": 0, "status": "missed", "details": [], "max_points": 5 }, { "key": "security_policy", "name": "Security-Policy", "detail": "security policy file detected", "points": 5, "status": "met", "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": 5.2, "status": "partial", "details": [], "max_points": 7.5 }, { "key": "vulnerabilities", "name": "Vulnerabilities", "detail": "113 existing vulnerabilities detected", "points": 0, "status": "missed", "details": [], "max_points": 7.5 } ] }, { "key": "dependency_advisories", "band": "excellent", "name": "Dependency advisories", "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@rails/actiontext@8.1.300 runtime dependency closure — what installing the published package pulls in — 2 packages. Reachability is not analyzed.", "notes": [ { "code": "excluded_no_data", "params": { "components": [ "no_advisories_left_outstanding" ] } }, { "code": "weights_renormalized", "params": {} }, { "code": "advisories_scope_published", "params": { "package": "npm:@rails/actiontext@8.1.300", "assessed": 2 } }, { "code": "advisories_reachability", "params": {} } ], "value": 100, "inputs": { "source": "osv", "advisories": 0, "affected_packages": 0, "assessed_packages": 2, "unassessed_packages": 0, "affected_by_severity": "none", "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": "no indirect dependency carries a known advisory", "points": 25, "status": "met", "details": [ { "code": "no_indirect_advisories", "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": 2, "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": 22 }, "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": "moderate", "name": "AI Readiness", "value": 61, "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": 0.87, "agent_instruction_files": [ "AGENTS.md" ], "agent_instruction_max_bytes": 6905 }, "components": [ { "key": "agent_instructions", "name": "Agent instructions", "detail": "AGENTS.md", "points": 45, "status": "met", "details": [ { "code": "file_list", "params": { "files": "AGENTS.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": "87 of 100 human commits state their intent (structured subject or explanatory body)", "points": 40, "status": "met", "details": [ { "code": "legible_history", "params": { "legible": 87, "sampled": 100 } } ], "max_points": 40 } ] }, { "key": "ai_verify_loop", "band": "moderate", "name": "Verify loop (build / test / typecheck)", "note": null, "notes": [], "value": 53, "inputs": { "has_nix": false, "has_tests": true, "lockfiles": [ "Gemfile.lock", "yarn.lock" ], "has_dockerfile": true, "typed_language": false, "bootstrap_files": [], "has_devcontainer": true, "has_linter_config": true, "typecheck_configs": [], "agent_commit_share": 0.04, "toolchain_manifests": [], "dependency_bot_commit_share": 0 }, "components": [ { "key": "one_command_bootstrap", "name": "One-command bootstrap", "detail": null, "points": 0, "status": "missed", "details": [], "max_points": 18 }, { "key": "automated_tests", "name": "Automated tests", "detail": null, "points": 22, "status": "met", "details": [], "max_points": 22 }, { "key": "lint_format_config", "name": "Lint / format config", "detail": ".rubocop.yml, eslint.config.mjs", "points": 11, "status": "met", "details": [ { "code": "file_list", "params": { "files": ".rubocop.yml, eslint.config.mjs" } } ], "max_points": 11 }, { "key": "static_type_checking", "name": "Static type checking", "detail": null, "points": 0, "status": "missed", "details": [], "max_points": 11 }, { "key": "reproducible_environment", "name": "Reproducible environment", "detail": "devcontainer, Dockerfile, lockfile", "points": 10, "status": "met", "details": [ { "code": "file_list", "params": { "files": "devcontainer, Dockerfile, lockfile" } } ], "max_points": 10 }, { "key": "demonstrated_agent_practice", "name": "Demonstrated agent practice", "detail": "4 of the last 100 commits agent-authored or agent-credited", "points": 8, "status": "partial", "details": [ { "code": "agent_authored_commits", "params": { "count": 4, "sampled": 100 } } ], "max_points": 10 }, { "key": "automated_maintenance", "name": "Automated maintenance", "detail": "no automated dependency updates observed", "points": 0, "status": "missed", "details": [ { "code": "no_dependency_automation", "params": {} } ], "max_points": 8 }, { "key": "openssf_scorecard_pinned_dependencies", "name": "OpenSSF Scorecard: Pinned-Dependencies", "detail": "dependency not pinned by hash detected -- score normalized to 2", "points": 2, "status": "partial", "details": [], "max_points": 10 } ] }, { "key": "ai_code_legibility", "band": "moderate", "name": "Code legibility for models", "note": null, "notes": [], "value": 54, "inputs": { "primary_language": "Ruby", "largest_source_bytes": 449565, "source_files_sampled": 3497, "oversized_source_files": 39 }, "components": [ { "key": "type_checkable_code", "name": "Type-checkable code", "detail": "Ruby without a type-check config", "points": 0, "status": "missed", "details": [ { "code": "no_typecheck_config_language", "params": { "language": "Ruby" } } ], "max_points": 45 }, { "key": "manageable_file_sizes", "name": "Manageable file sizes", "detail": "39/3497 source files over 60KB", "points": 54.4, "status": "partial", "details": [ { "code": "oversized_source_files", "params": { "kb": 60, "sampled": 3497, "oversized": 39 } } ], "max_points": 55 } ] }, { "key": "ai_interfaces", "band": "at_risk", "name": "Machine-readable interfaces", "note": null, "notes": [], "value": 40, "inputs": { "example_dirs": [ "examples" ], "has_mcp_signal": false, "api_schema_files": [] }, "components": [ { "key": "api_schema_openapi_graphql_proto", "name": "API schema (OpenAPI/GraphQL/proto)", "detail": null, "points": 0, "status": "missed", "details": [], "max_points": 40 }, { "key": "mcp_server", "name": "MCP server", "detail": null, "points": 0, "status": "missed", "details": [], "max_points": 20 }, { "key": "runnable_examples", "name": "Runnable examples", "detail": "examples", "points": 40, "status": "met", "details": [ { "code": "file_list", "params": { "files": "examples" } } ], "max_points": 40 } ] } ], "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": [], "report_type": "repository", "generated_at": "2026-07-21T23:15:52.789308Z", "schema_version": "0.26.0", "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rails/rails.svg", "full_name": "rails/rails", "license_state": "standard", "license_spdx": "MIT" }, "repoMeta": null, "notFound": false, "related": [ { "id": 27759, "full_name": "chatwoot/chatwoot", "url": "https://github.com/chatwoot/chatwoot", "description": "Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬", "ecosystem": "npm", "ecosystems": [ "npm", "rubygems" ], "primary_language": "Ruby", "languages": [ "Ruby", "Vue", "JavaScript" ], "topics": [ "vuejs", "intercom", "zendesk", "rails", "design", "sass", "actioncable", "opensource", "livechat", "javascript", "docker", "docker-image", "heroku", "conversation", "customer-support", "whatsapp", "chat-widget", "dashboard", "ruby" ], "license_spdx": null, "license_state": "custom", "stars": 34574, "forks": 8243, "watchers": 279, "monthly_downloads": null, "latest_score": 86, "latest_band": "excellent", "latest_scanned_at": "2026-07-20T11:57:10.051267Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "unverified", "abandonment_state": "unverified", "red_flags": [], "badge_url": "" }, { "id": 2193, "full_name": "activeadmin/activeadmin", "url": "https://github.com/activeadmin/activeadmin", "description": "The administration framework for Ruby on Rails applications.", "ecosystem": "npm", "ecosystems": [ "npm", "rubygems" ], "primary_language": "Ruby", "languages": [ "Ruby", "Gherkin" ], "topics": [ "ruby", "activeadmin", "arbre", "rails", "admin-ui", "administration", "administrative" ], "license_spdx": "MIT", "license_state": "standard", "stars": 9705, "forks": 3324, "watchers": 178, "monthly_downloads": 337262, "latest_score": 85, "latest_band": "excellent", "latest_scanned_at": "2026-07-22T01:19:56.119134Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "organic", "abandonment_state": "maintained", "red_flags": [], "badge_url": "" }, { "id": 4643, "full_name": "slackapi/bolt-js", "url": "https://github.com/slackapi/bolt-js", "description": "A framework to build Slack apps using JavaScript", "ecosystem": "npm", "ecosystems": [ "npm" ], "primary_language": "TypeScript", "languages": [ "TypeScript" ], "topics": [ "slack", "framework", "typescript", "slack-apps", "javascript", "socket-mode", "websocket", "websockets", "websocket-client", "bot", "events-api", "slash-commands", "interactive-components", "api", "chatops", "integration", "slack-app" ], "license_spdx": "MIT", "license_state": "standard", "stars": 2923, "forks": 439, "watchers": 38, "monthly_downloads": 13209082, "latest_score": 87, "latest_band": "excellent", "latest_scanned_at": "2026-07-21T00:53:44.522472Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "unverified", "abandonment_state": "unverified", "red_flags": [], "badge_url": "" }, { "id": 27828, "full_name": "solidusio/solidus", "url": "https://github.com/solidusio/solidus", "description": "🛒 Solidus, the open-source eCommerce framework for industry trailblazers.", "ecosystem": "rubygems", "ecosystems": [ "rubygems" ], "primary_language": "Ruby", "languages": [ "Ruby", "HTML" ], "topics": [ "solidus", "ruby", "rails", "storefront", "ecommerce", "ecommerce-platform", "ecommerce-framework", "hacktoberfest" ], "license_spdx": null, "license_state": "custom", "stars": 5318, "forks": 1397, "watchers": 113, "monthly_downloads": null, "latest_score": 85, "latest_band": "excellent", "latest_scanned_at": "2026-07-20T12:16:01.138242Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "unverified", "abandonment_state": "unverified", "red_flags": [], "badge_url": "" }, { "id": 27767, "full_name": "opf/openproject", "url": "https://github.com/opf/openproject", "description": "OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐Star us on GitHub", "ecosystem": "npm", "ecosystems": [ "npm", "rubygems" ], "primary_language": "Ruby", "languages": [ "Ruby", "TypeScript" ], "topics": [ "project-management", "openproject", "ruby", "issue-tracker", "scrum", "angular", "project-planning", "timeline", "bug-tracker", "roadmap", "kanban", "boards", "workflows", "gantt-chart", "bcf", "ifc", "gantt", "agile-development", "jira-alternative", "product-management" ], "license_spdx": "GPL-3.0", "license_state": "standard", "stars": 15608, "forks": 3368, "watchers": 250, "monthly_downloads": null, "latest_score": 89, "latest_band": "excellent", "latest_scanned_at": "2026-07-20T12:00:19.501768Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "unverified", "abandonment_state": "unverified", "red_flags": [], "badge_url": "" }, { "id": 12466, "full_name": "fastify/fastify", "url": "https://github.com/fastify/fastify", "description": "Fast and low overhead web framework, for Node.js", "ecosystem": "npm", "ecosystems": [ "npm" ], "primary_language": "JavaScript", "languages": [ "JavaScript" ], "topics": [ "webframework", "performance", "speed", "nodejs", "hacktoberfest", "web", "framework", "json", "schema", "open", "api" ], "license_spdx": "MIT", "license_state": "standard", "stars": 36740, "forks": 2839, "watchers": 361, "monthly_downloads": 38579259, "latest_score": 92, "latest_band": "excellent", "latest_scanned_at": "2026-07-17T04:49:50.860832Z", "has_high_risk_jurisdiction_exposure": false, "has_malicious_dependency": false, "growth_authenticity": "unverified", "abandonment_state": "unverified", "red_flags": [], "badge_url": "" } ] } }
Ruby on Rails
rails/rails holds a health index of 86 out of 100, placing it in the Excellent band. It scores highest on Community & Adoption (97/100) and lowest on AI Readiness (61/100). It was last updated today. 10 contributors account for most of its recent work.
Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.
Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.
This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.
| Registry | Package | Version | Downloads / mo | Versions | Last publish | Tags |
|---|---|---|---|---|---|---|
| RubyGems | rails | 8.1.3 | - | 516 | 119 days ago | — |
| npm | @rails/actiontext | 8.1.300 | 1,611,030 | 151 | 119 days ago | — |
| npm | @rails/actioncable | 8.1.300 | 7,107,601 | 151 | 119 days ago | websocketsactioncablerails |
| RubyGems | railties | 8.1.3 | - | 452 | 119 days ago | — |
| npm | @rails/activestorage | 8.1.300 | 3,915,592 | 151 | 119 days ago | — |
| RubyGems | activejob | 8.1.3 | - | 266 | 119 days ago | — |
| RubyGems | actionpack | 8.1.3 | - | 515 | 119 days ago | — |
| RubyGems | actiontext | 8.1.3 | - | 150 | 119 days ago | — |
Is the project alive — is code being written and are releases shipping?
| 36/36 | Push recency — last push 0 days ago |
| 36/36 | Commit cadence — 52/52 weeks with commits |
| 18/18 | Commit volume — 3,266 commits in the last year |
| 10/10 | OpenSSF Scorecard: Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10 |
| commits_last_year | 3,266 |
| human_commit_share | 1 |
| days_since_last_push | 0 |
| active_weeks_last_year | 52 |
| 27/27 | Ships releases — 100 releases published |
| 27/36 | Release recency — latest release 119 days ago |
| 27/27 | Release cadence — a release every ~16.3 days |
| 0/10 | OpenSSF Scorecard: Signed-Releases — no data |
| releases_count | 100 |
| latest_release_tag | v8.1.3 |
| releases_from_tags | no |
| days_since_latest_release | 119 |
| mean_days_between_releases | 16.3 |
Does the project have users, downloads, attention, and a welcoming setup for contributors?
| 60/60 | Stars — 58,641 stars |
| 25/25 | Forks — 22,363 forks |
| 15/15 | Watchers — 2,334 watchers |
| forks | 22,363 |
| stars | 58,641 |
| watchers | 2,334 |
| growth_state | organic |
| growth_factor_pct | 100 |
| 22.5/22.5 | README |
| 22.5/22.5 | License — recognized license (MIT) |
| 18/18 | CONTRIBUTING guide |
| 13.5/13.5 | Code of conduct |
| 0/7.2 | Issue template |
| 6.3/6.3 | PR template |
| has_readme | yes |
| has_license | yes |
| has_contributing | yes |
| has_issue_template | no |
| has_code_of_conduct | yes |
| has_pull_request_template | yes |
| 80/80 | Monthly downloads — 12,634,223 downloads/month across npm, rubygems |
| 0/20 | Registry dependents — not reported by this ecosystem |
| packages | rails, @rails/actiontext, @rails/actioncable, railties, @rails/activestorage, activejob, actionpack, actiontext |
| dependents | — |
| ecosystems | npm, rubygems |
| total_downloads | 3,438,251,676 |
| monthly_downloads | 12,634,223 |
Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?
| 54/54 | Bus factor — 10 contributor(s) cover half of all commits |
| 19.6/22.5 | Commit distribution — top contributor authored 13% of commits |
| 13.5/13.5 | Contributor breadth — 100 contributors |
| 10/10 | OpenSSF Scorecard: Contributors — project has 83 contributing companies or organizations |
| bus_factor | 10 |
| contributors_sampled | 100 |
| top_contributor_share | 0.129 |
| 45.5/46.8 | Issue resolution — 97% of issues closed |
| 26.8/38.3 | PR acceptance — 26,641/37,960 decided PRs merged |
| 15/15 | OpenSSF Scorecard: Code-Review — all changesets reviewed |
| merged_prs | 26,641 |
| open_issues | 477 |
| closed_issues | 18,148 |
| issue_closed_ratio | 0.974 |
| closed_unmerged_prs | 11,319 |
| 30/30 | Ownership backing — organization-owned |
| 0/20 | Verified domain |
| 24.6/25 | Owner reach — 2,680 followers of rails |
| 25/25 | Track record — 127 public repos, account ~18 yr old |
| followers | 2,680 |
| owner_type | Organization |
| is_verified | — |
| owner_login | rails |
| public_repos | 127 |
| account_age_days | 6,684 |
| 25/25 | Published & resolvable — 8 package(s) on npm, rubygems |
| 35/35 | Publish recency — latest publish 119 days ago |
| 20/20 | Version history — 516 published versions |
| 20/20 | Not deprecated — active, not deprecated or yanked |
| packages | rails, @rails/actiontext, @rails/actioncable, railties, @rails/activestorage, activejob, actionpack, actiontext |
| ecosystems | npm, rubygems |
| any_deprecated | no |
| min_days_since_publish | 119 |
Are baseline engineering and documentation practices in place?
| 24/24 | CI workflows — 9 workflow(s) |
| 24/24 | Tests present |
| 16/16 | Linter config — .rubocop.yml, eslint.config.mjs |
| 0/9.6 | Pre-commit hooks |
| 0/6.4 | .editorconfig |
| 20/20 | OpenSSF Scorecard: CI-Tests — 15 out of 15 merged PRs checked by a CI test -- score normalized to 10 |
| has_ci | yes |
| has_tests | yes |
| has_editorconfig | no |
| has_linter_config | yes |
| has_precommit_config | no |
| 30/30 | README |
| 0/25 | Documentation directory |
| 15/15 | Documentation / homepage site — https://rubyonrails.org |
| 10/10 | Repository description |
| 10/10 | Topics — 7 topics |
| 0/10 | Wiki |
| topics | rails, mvc, html, activerecord, activejob, ruby, framework |
| has_wiki | no |
| homepage | https://rubyonrails.org |
| has_readme | yes |
| has_docs_dir | no |
| has_description | yes |
Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?
| 7.5/7.5 | Binary-Artifacts — no binaries found in the repo |
| 2.2/7.5 | Branch-Protection — branch protection is not maximal on development and all release branches |
| 2.5/2.5 | CI-Tests — 15 out of 15 merged PRs checked by a CI test -- score normalized to 10 |
| 0.5/2.5 | CII-Best-Practices — badge detected: InProgress |
| 7.5/7.5 | Code-Review — all changesets reviewed |
| 2.5/2.5 | Contributors — project has 83 contributing companies or organizations |
| 10/10 | Dangerous-Workflow — no dangerous workflow patterns detected |
| 0/7.5 | Dependency-Update-Tool — no update tool detected |
| 0/5 | Fuzzing — project is not fuzzed |
| 2.5/2.5 | License — license file detected |
| 7.5/7.5 | Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10 |
| 0/5 | Packaging — no data |
| 1/5 | Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2 |
| 0/5 | SAST — SAST tool is not run on all commits -- score normalized to 0 |
| 5/5 | Security-Policy — security policy file detected |
| 0/7.5 | Signed-Releases — no data |
| 5.2/7.5 | Token-Permissions — detected GitHub workflow tokens with excessive permissions |
| 0/7.5 | Vulnerabilities — 113 existing vulnerabilities detected |
| source | openssf_scorecard |
| checks_evaluated | 16 |
| scorecard_version | v5.5.0 |
| checks_inconclusive | 2 |
| scorecard_aggregate | 5.8 |
| 35/35 | Direct dependencies free of known advisories — no direct dependency carries a known advisory |
| 25/25 | Indirect dependencies free of known advisories — no indirect dependency carries a known advisory |
| 0/40 | No advisories left outstanding — no advisory carries a publication date |
| source | osv |
| advisories | 0 |
| affected_packages | 0 |
| assessed_packages | 2 |
| unassessed_packages | 0 |
| affected_by_severity | none |
| direct_affected_packages | 0 |
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.
| 45/45 | Agent instructions — AGENTS.md |
| 0/15 | Machine-readable docs (llms.txt) |
| 40/40 | Legible commit history — 87 of 100 human commits state their intent (structured subject or explanatory body) |
| has_llms_txt | no |
| legible_history_share | 0.87 |
| agent_instruction_files | AGENTS.md |
| agent_instruction_max_bytes | 6,905 |
| 0/18 | One-command bootstrap |
| 22/22 | Automated tests |
| 11/11 | Lint / format config — .rubocop.yml, eslint.config.mjs |
| 0/11 | Static type checking |
| 10/10 | Reproducible environment — devcontainer, Dockerfile, lockfile |
| 8/10 | Demonstrated agent practice — 4 of the last 100 commits agent-authored or agent-credited |
| 0/8 | Automated maintenance — no automated dependency updates observed |
| 2/10 | OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 2 |
| has_nix | no |
| has_tests | yes |
| lockfiles | Gemfile.lock, yarn.lock |
| has_dockerfile | yes |
| typed_language | no |
| bootstrap_files | — |
| has_devcontainer | yes |
| has_linter_config | yes |
| typecheck_configs | — |
| agent_commit_share | 0.04 |
| toolchain_manifests | — |
| dependency_bot_commit_share | 0 |
| 0/45 | Type-checkable code — Ruby without a type-check config |
| 54.4/55 | Manageable file sizes — 39/3,497 source files over 60KB |
| primary_language | Ruby |
| largest_source_bytes | 449,565 |
| source_files_sampled | 3,497 |
| oversized_source_files | 39 |
| 0/40 | API schema (OpenAPI/GraphQL/proto) |
| 0/20 | MCP server |
| 40/40 | Runnable examples — examples |
| example_dirs | examples |
| has_mcp_signal | no |
| api_schema_files | — |
When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.
Only the most recent history is shown — this repository exceeds the collection window, so the earliest history is not captured.
Each point covers 2 days.
Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).
| 10 | Binary-Artifacts | no binaries found in the repo |
| 3 | Branch-Protection | branch protection is not maximal on development and all release branches |
| 10 | CI-Tests | 15 out of 15 merged PRs checked by a CI test -- score normalized to 10 |
| 2 | CII-Best-Practices | badge detected: InProgress |
| 10 | Code-Review | all changesets reviewed |
| 10 | Contributors | project has 83 contributing companies or organizations |
| 10 | Dangerous-Workflow | no dangerous workflow patterns detected |
| 0 | Dependency-Update-Tool | no update tool detected |
| 0 | Fuzzing | project is not fuzzed |
| 10 | License | license file detected |
| 10 | Maintained | 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10 |
| n/a | Packaging | packaging workflow not detected |
| 2 | Pinned-Dependencies | dependency not pinned by hash detected -- score normalized to 2 |
| 0 | SAST | SAST tool is not run on all commits -- score normalized to 0 |
| 10 | Security-Policy | security policy file detected |
| n/a | Signed-Releases | no releases found |
| 7 | Token-Permissions | detected GitHub workflow tokens with excessive permissions |
| 0 | Vulnerabilities | 113 existing vulnerabilities detected |
| Registry | Package | Version constraint | Manifest |
|---|---|---|---|
| RubyGems | minitest | ~> 6.0 | Gemfile |
| RubyGems | minitest-mock | — | Gemfile |
| RubyGems | releaser | — | Gemfile |
| RubyGems | sprockets-rails | >= 2.0.0 | Gemfile |
| RubyGems | propshaft | >= 0.1.7 | Gemfile |
| RubyGems | capybara | >= 3.39 | Gemfile |
| RubyGems | selenium-webdriver | >= 4.20.0 | Gemfile |
| RubyGems | rack-cache | ~> 1.2 | Gemfile |
| RubyGems | stimulus-rails | — | Gemfile |
| RubyGems | turbo-rails | — | Gemfile |
| RubyGems | jsbundling-rails | — | Gemfile |
| RubyGems | cssbundling-rails | — | Gemfile |
| RubyGems | importmap-rails | >= 1.2.3 | Gemfile |
| RubyGems | tailwindcss-rails | — | Gemfile |
| RubyGems | dartsass-rails | — | Gemfile |
| RubyGems | solid_cache | — | Gemfile |
| RubyGems | solid_queue | — | Gemfile |
| RubyGems | solid_cable | — | Gemfile |
| RubyGems | kamal | >= 2.1.0 | Gemfile |
| RubyGems | thruster | — | Gemfile |
| RubyGems | bcrypt | ~> 3.1.11 | Gemfile |
| RubyGems | argon2 | ~> 2.3.2 | Gemfile |
| RubyGems | terser | >= 1.1.4 | Gemfile |
| RubyGems | json | >= 2.0.0 | Gemfile |
| RubyGems | uri | >= 0.13.1 | Gemfile |
| RubyGems | prism | — | Gemfile |
| RubyGems | rubocop | 1.79.2 | Gemfile |
| RubyGems | rubocop-minitest | — | Gemfile |
| RubyGems | rubocop-packaging | — | Gemfile |
| RubyGems | rubocop-performance | — | Gemfile |
| RubyGems | rubocop-rails | — | Gemfile |
| RubyGems | rubocop-md | — | Gemfile |
| RubyGems | rubocop-rails-omakase | — | Gemfile |
| RubyGems | mdl | != 0.13.0 | Gemfile |
| RubyGems | sdoc | ~> 2.6.4 | Gemfile |
| RubyGems | redcarpet | ~> 3.6.1 | Gemfile |
| RubyGems | w3c_validators | ~> 1.3.6 | Gemfile |
| RubyGems | rouge | — | Gemfile |
| RubyGems | rubyzip | ~> 2.0 | Gemfile |
| RubyGems | dalli | — | Gemfile |
| RubyGems | redis-client | >= 0.28.0 | Gemfile |
| RubyGems | listen | ~> 3.3 | Gemfile |
| RubyGems | libxml-ruby | — | Gemfile |
| RubyGems | connection_pool | — | Gemfile |
| RubyGems | rexml | — | Gemfile |
| RubyGems | msgpack | >= 1.7.0 | Gemfile |
| RubyGems | bootsnap | >= 1.4.4 | Gemfile |
| RubyGems | webrick | — | Gemfile |
| RubyGems | jbuilder | — | Gemfile |
| RubyGems | web-console | — | Gemfile |
| RubyGems | rack | — | Gemfile |
| RubyGems | rack | — | Gemfile |
| RubyGems | useragent | — | Gemfile |
| RubyGems | resque | — | Gemfile |
| RubyGems | resque-scheduler | — | Gemfile |
| RubyGems | queue_classic | >= 4.0.0 | Gemfile |
| RubyGems | sneakers | — | Gemfile |
| RubyGems | backburner | — | Gemfile |
| RubyGems | puma | >= 5.0.3 | Gemfile |
| RubyGems | redis | >= 4.0.1 | Gemfile |
| RubyGems | redis-namespace | — | Gemfile |
| RubyGems | websocket-client-simple | — | Gemfile |
| RubyGems | aws-sdk-s3 | — | Gemfile |
| RubyGems | google-cloud-storage | ~> 1.11 | Gemfile |
| RubyGems | image_processing | ~> 2.0 | Gemfile |
| RubyGems | ruby-vips | ~> 2.3 | Gemfile |
| RubyGems | mini_magick | ~> 5.0 | Gemfile |
| RubyGems | aws-sdk-sns | — | Gemfile |
| RubyGems | webmock | — | Gemfile |
| RubyGems | brakeman | — | Gemfile |
| RubyGems | bundler-audit | — | Gemfile |
| RubyGems | nokogiri | >= 1.8.1 | Gemfile |
| RubyGems | sqlite3 | >= 2.1 | Gemfile |
| RubyGems | pg | ~> 1.3 | Gemfile |
| RubyGems | mysql2 | ~> 0.5 | Gemfile |
| RubyGems | trilogy | >= 2.7.0 | Gemfile |
| RubyGems | tzinfo-data | — | Gemfile |
| RubyGems | wdm | >= 0.1.0 | Gemfile |
| RubyGems | launchy | — | Gemfile |
| npm | @rails/activestorage | >= 8.1.0-alpha | actiontext/package.json |
| npm | spark-md5 | ^3.0.1 | activestorage/package.json |
| npm | js-sha256 | ^0.9.0 | activestorage/package.json |
Full resolved dependency set from the GitHub dependency graph: 97 direct and 959 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.
| Registry | Package | Version | Relation |
|---|---|---|---|
| npm | @rails/activestorage | 8.1.0-beta1 | direct |
| npm | @rails/activestorage | >= 8.1.0-alpha | direct |
| npm | js-sha256 | 0.9.0 | direct |
| npm | js-sha256 | ^0.9.0 | direct |
| npm | spark-md5 | 3.0.2 | direct |
| npm | spark-md5 | ^3.0.1 | direct |
| RubyGems | argon2 | 2.3.2 | direct |
| RubyGems | aws-sdk-s3 | 1.197.0 | direct |
| RubyGems | aws-sdk-sns | 1.92.0 | direct |
| RubyGems | backburner | 1.7.0 | direct |
| RubyGems | bcrypt | 3.1.20 | direct |
| RubyGems | bootsnap | — | direct |
| RubyGems | bootsnap | 1.18.4 | direct |
| RubyGems | brakeman | 7.0.0 | direct |
| RubyGems | bundler-audit | 0.9.3 | direct |
| RubyGems | capybara | — | direct |
| RubyGems | capybara | 3.40.0 | direct |
| RubyGems | connection_pool | — | direct |
| RubyGems | connection_pool | 3.0.2 | direct |
| RubyGems | cssbundling-rails | 1.4.1 | direct |
| RubyGems | dalli | 5.0.0 | direct |
| RubyGems | dartsass-rails | 0.5.1 | direct |
| RubyGems | google-cloud-storage | 1.54.0 | direct |
| RubyGems | image_processing | 2.0.1 | direct |
| RubyGems | importmap-rails | 2.1.0 | direct |
| RubyGems | jbuilder | 2.13.0 | direct |
| RubyGems | jsbundling-rails | 1.3.1 | direct |
| RubyGems | json | — | direct |
| RubyGems | json | 2.20.0 | direct |
| RubyGems | kamal | 2.4.0 | direct |
| RubyGems | launchy | 3.0.1 | direct |
| RubyGems | libxml-ruby | 6.0.0 | direct |
| RubyGems | listen | — | direct |
| RubyGems | listen | 3.9.0 | direct |
| RubyGems | mdl | 0.12.0 | direct |
| RubyGems | mini_magick | 5.3.1 | direct |
| RubyGems | minitest | — | direct |
| RubyGems | minitest | 5.25.1 | direct |
| RubyGems | minitest | 6.0.6 | direct |
| RubyGems | minitest-mock | 5.27.0 | direct |
| RubyGems | msgpack | 1.7.5 | direct |
| RubyGems | mysql2 | 0.5.6 | direct |
| RubyGems | nokogiri | — | direct |
| RubyGems | nokogiri | 1.19.1 | direct |
| RubyGems | pg | 1.6.3 | direct |
| RubyGems | prism | — | direct |
| RubyGems | prism | 1.7.0 | direct |
| RubyGems | propshaft | 1.3.1 | direct |
| RubyGems | puma | 6.5.0 | direct |
| RubyGems | queue_classic | 4.0.0 | direct |
| RubyGems | rack | — | direct |
| RubyGems | rack | 3.2.1 | direct |
| RubyGems | rack-cache | 1.17.0 | direct |
| RubyGems | redcarpet | 3.6.1 | direct |
| RubyGems | redis | 5.4.1 | direct |
| RubyGems | redis-client | 0.28.0 | direct |
| RubyGems | redis-namespace | 1.11.0 | direct |
| RubyGems | resque | 2.7.0 | direct |
| RubyGems | resque-scheduler | 4.11.0 | direct |
| RubyGems | rexml | 3.4.0 | direct |
| RubyGems | rouge | 4.6.1 | direct |
| RubyGems | rubocop | 1.79.2 | direct |
| RubyGems | rubocop-md | 2.0.1 | direct |
| RubyGems | rubocop-minitest | 0.37.1 | direct |
| RubyGems | rubocop-packaging | 0.6.0 | direct |
| RubyGems | rubocop-performance | 1.24.0 | direct |
| RubyGems | rubocop-rails | 2.30.3 | direct |
| RubyGems | rubocop-rails-omakase | 1.0.0 | direct |
| RubyGems | ruby-vips | 2.3.0 | direct |
| RubyGems | rubyzip | 2.4.1 | direct |
| RubyGems | sdoc | 2.6.5 | direct |
| RubyGems | selenium-webdriver | — | direct |
| RubyGems | selenium-webdriver | 4.32.0 | direct |
| RubyGems | sneakers | 2.11.0 | direct |
| RubyGems | solid_cable | 3.0.5 | direct |
| RubyGems | solid_cache | 1.0.6 | direct |
| RubyGems | solid_queue | 1.1.2 | direct |
| RubyGems | sprockets-rails | 3.5.2 | direct |
| RubyGems | sqlite3 | 2.5.0 | direct |
| RubyGems | stimulus-rails | 1.3.4 | direct |
| RubyGems | tailwindcss-rails | 3.2.0 | direct |
| RubyGems | terser | 1.2.4 | direct |
| RubyGems | thruster | 0.1.16 | direct |
| RubyGems | trilogy | 2.11.0 | direct |
| RubyGems | turbo-rails | 2.0.11 | direct |
| RubyGems | tzinfo-data | — | direct |
| RubyGems | uri | — | direct |
| RubyGems | uri | 1.0.3 | direct |
| RubyGems | uri | 1.0.4 | direct |
| RubyGems | useragent | — | direct |
| RubyGems | useragent | 0.16.11 | direct |
| RubyGems | w3c_validators | 1.3.7 | direct |
| RubyGems | web-console | — | direct |
| RubyGems | web-console | 4.2.1 | direct |
| RubyGems | webmock | 3.25.0 | direct |
| RubyGems | webrick | 1.9.1 | direct |
| RubyGems | websocket-client-simple | 0.9.0 | direct |
| npm | @babel/code-frame | 7.22.5 | indirect |
| npm | @babel/helper-validator-identifier | 7.22.5 | indirect |
| npm | @babel/highlight | 7.22.5 | indirect |
| npm | @eggjs/yauzl | 2.11.0 | indirect |
| npm | @eslint-community/eslint-utils | 4.9.0 | indirect |
| npm | @eslint-community/regexpp | 4.12.1 | indirect |
| npm | @eslint/config-array | 0.21.0 | indirect |
| npm | @eslint/config-helpers | 0.4.0 | indirect |
| npm | @eslint/core | 0.16.0 | indirect |
| npm | @eslint/eslintrc | 3.3.1 | indirect |
| npm | @eslint/js | 9.37.0 | indirect |
| npm | @eslint/js | ^9.24.0 | indirect |
| npm | @eslint/object-schema | 2.1.6 | indirect |
| npm | @eslint/plugin-kit | 0.4.0 | indirect |
| npm | @hapi/bourne | 3.0.0 | indirect |
| npm | @humanfs/core | 0.19.1 | indirect |
| npm | @humanfs/node | 0.16.7 | indirect |
| npm | @humanwhocodes/module-importer | 1.0.1 | indirect |
| npm | @humanwhocodes/retry | 0.4.3 | indirect |
| npm | @isaacs/cliui | 8.0.2 | indirect |
| npm | @jridgewell/resolve-uri | 3.1.2 | indirect |
| npm | @jridgewell/source-map | 0.3.4 | indirect |
| npm | @jridgewell/sourcemap-codec | 1.5.5 | indirect |
| npm | @jridgewell/trace-mapping | 0.3.31 | indirect |
| npm | @nodable/entities | 2.2.0 | indirect |
| npm | @nodelib/fs.scandir | 2.1.5 | indirect |
| npm | @nodelib/fs.stat | 2.0.5 | indirect |
| npm | @nodelib/fs.walk | 1.2.8 | indirect |
| npm | @pkgjs/parseargs | 0.11.0 | indirect |
| npm | @promptbook/utils | 0.69.5 | indirect |
| npm | @puppeteer/browsers | 2.13.2 | indirect |
| npm | @rollup/plugin-commonjs | 19.0.2 | indirect |
| npm | @rollup/plugin-commonjs | ^19.0.1 | indirect |
| npm | @rollup/plugin-node-resolve | 11.2.1 | indirect |
| npm | @rollup/plugin-node-resolve | 15.3.1 | indirect |
| npm | @rollup/plugin-node-resolve | ^11.0.1 | indirect |
| npm | @rollup/pluginutils | 3.1.0 | indirect |
| npm | @rollup/pluginutils | 5.4.0 | indirect |
| npm | @rollup/rollup-android-arm-eabi | 4.61.1 | indirect |
| npm | @rollup/rollup-android-arm64 | 4.61.1 | indirect |
| npm | @rollup/rollup-darwin-arm64 | 4.61.1 | indirect |
| npm | @rollup/rollup-darwin-x64 | 4.61.1 | indirect |
| npm | @rollup/rollup-freebsd-arm64 | 4.61.1 | indirect |
| npm | @rollup/rollup-freebsd-x64 | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-arm-gnueabihf | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-arm-musleabihf | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-arm64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-arm64-musl | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-loong64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-loong64-musl | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-ppc64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-ppc64-musl | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-riscv64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-riscv64-musl | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-s390x-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-x64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-linux-x64-musl | 4.61.1 | indirect |
| npm | @rollup/rollup-openbsd-x64 | 4.61.1 | indirect |
| npm | @rollup/rollup-openharmony-arm64 | 4.61.1 | indirect |
| npm | @rollup/rollup-win32-arm64-msvc | 4.61.1 | indirect |
| npm | @rollup/rollup-win32-ia32-msvc | 4.61.1 | indirect |
| npm | @rollup/rollup-win32-x64-gnu | 4.61.1 | indirect |
| npm | @rollup/rollup-win32-x64-msvc | 4.61.1 | indirect |
| npm | @rtsao/scc | 1.1.0 | indirect |
| npm | @sindresorhus/is | 4.6.0 | indirect |
| npm | @szmarczak/http-timer | 4.0.6 | indirect |
| npm | @tootallnate/quickjs-emscripten | 0.23.0 | indirect |
| npm | @types/accepts | 1.3.7 | indirect |
| npm | @types/babel__code-frame | 7.27.0 | indirect |
| npm | @types/body-parser | 1.19.6 | indirect |
| npm | @types/cacheable-request | 6.0.3 | indirect |
| npm | @types/co-body | 6.1.3 | indirect |
| npm | @types/command-line-args | 5.2.3 | indirect |
| npm | @types/connect | 3.4.38 | indirect |
| npm | @types/content-disposition | 0.5.9 | indirect |
| npm | @types/convert-source-map | 2.0.3 | indirect |
| npm | @types/cookies | 0.9.2 | indirect |
| npm | @types/debounce | 1.2.4 | indirect |
| npm | @types/estree | 0.0.39 | indirect |
| npm | @types/estree | 1.0.8 | indirect |
| npm | @types/estree | 1.0.9 | indirect |
| npm | @types/express | 5.0.6 | indirect |
| npm | @types/express-serve-static-core | 5.1.1 | indirect |
| npm | @types/http-assert | 1.5.6 | indirect |
| npm | @types/http-cache-semantics | 4.2.0 | indirect |
| npm | @types/http-errors | 2.0.5 | indirect |
| npm | @types/istanbul-lib-coverage | 2.0.6 | indirect |
| npm | @types/istanbul-lib-report | 3.0.3 | indirect |
| npm | @types/istanbul-reports | 3.0.4 | indirect |
| npm | @types/json-schema | 7.0.15 | indirect |
| npm | @types/json5 | 0.0.29 | indirect |
| npm | @types/keygrip | 1.0.6 | indirect |
| npm | @types/keyv | 3.1.4 | indirect |
| npm | @types/koa | 2.15.2 | indirect |
| npm | @types/koa | 3.0.3 | indirect |
| npm | @types/koa-compose | 3.2.9 | indirect |
| npm | @types/node | 20.19.43 | indirect |
| npm | @types/node | 20.3.2 | indirect |
| npm | @types/parse5 | 6.0.3 | indirect |
| npm | @types/qs | 6.15.1 | indirect |
| npm | @types/range-parser | 1.2.7 | indirect |
| npm | @types/resolve | 1.17.1 | indirect |
| npm | @types/resolve | 1.20.2 | indirect |
| npm | @types/responselike | 1.0.3 | indirect |
| npm | @types/send | 1.2.1 | indirect |
| npm | @types/serve-static | 2.2.0 | indirect |
| npm | @types/sinonjs__fake-timers | 8.1.5 | indirect |
| npm | @types/which | 2.0.2 | indirect |
| npm | @types/ws | 7.4.7 | indirect |
| npm | @types/ws | 8.18.1 | indirect |
| npm | @types/yauzl | 2.10.3 | indirect |
| npm | @wdio/config | 9.28.0 | indirect |
| npm | @wdio/logger | 9.18.0 | indirect |
| npm | @wdio/protocols | 9.28.0 | indirect |
| npm | @wdio/repl | 9.16.2 | indirect |
| npm | @wdio/types | 9.28.0 | indirect |
| npm | @wdio/utils | 9.28.0 | indirect |
| npm | @web/browser-logs | 0.4.1 | indirect |
| npm | @web/config-loader | 0.3.3 | indirect |
| npm | @web/dev-server | 0.4.6 | indirect |
| npm | @web/dev-server-core | 0.7.5 | indirect |
| npm | @web/dev-server-rollup | 0.6.4 | indirect |
| npm | @web/parse5-utils | 2.1.1 | indirect |
| npm | @web/test-runner | 0.20.2 | indirect |
| npm | @web/test-runner | ^0.20.2 | indirect |
| npm | @web/test-runner-chrome | 0.18.1 | indirect |
| npm | @web/test-runner-commands | 0.9.0 | indirect |
| npm | @web/test-runner-core | 0.13.4 | indirect |
| npm | @web/test-runner-coverage-v8 | 0.8.0 | indirect |
| npm | @web/test-runner-mocha | 0.9.0 | indirect |
| npm | @web/test-runner-saucelabs | 0.13.0 | indirect |
| npm | @web/test-runner-saucelabs | ^0.13.0 | indirect |
| npm | @web/test-runner-webdriver | 0.9.0 | indirect |
| npm | @zip.js/zip.js | 2.8.26 | indirect |
| npm | abort-controller | 3.0.0 | indirect |
| npm | accepts | 1.3.8 | indirect |
| npm | acorn | 8.15.0 | indirect |
| npm | acorn-jsx | 5.3.2 | indirect |
| npm | agent-base | 7.1.4 | indirect |
| npm | ajv | 6.12.6 | indirect |
| npm | ansi-escapes | 4.3.2 | indirect |
| npm | ansi-regex | 5.0.1 | indirect |
| npm | ansi-regex | 6.2.2 | indirect |
| npm | ansi-styles | 3.2.1 | indirect |
| npm | ansi-styles | 4.3.0 | indirect |
| npm | ansi-styles | 6.2.3 | indirect |
| npm | anynum | 1.0.0 | indirect |
| npm | archiver | 7.0.1 | indirect |
| npm | archiver-utils | 5.0.2 | indirect |
| npm | argparse | 2.0.1 | indirect |
| npm | aria-query | 5.3.2 | indirect |
| npm | array-back | 3.1.0 | indirect |
| npm | array-back | 6.2.3 | indirect |
| npm | array-buffer-byte-length | 1.0.2 | indirect |
| npm | array-includes | 3.1.9 | indirect |
| npm | array-union | 2.1.0 | indirect |
| npm | array.prototype.findlastindex | 1.2.6 | indirect |
| npm | array.prototype.flat | 1.3.3 | indirect |
| npm | array.prototype.flatmap | 1.3.3 | indirect |
| npm | arraybuffer.prototype.slice | 1.0.4 | indirect |
| npm | ast-types | 0.13.4 | indirect |
| npm | astral-regex | 2.0.0 | indirect |
| npm | async | 3.2.6 | indirect |
| npm | async-function | 1.0.0 | indirect |
| npm | asynckit | 0.4.0 | indirect |
| npm | available-typed-arrays | 1.0.7 | indirect |
| npm | b4a | 1.8.1 | indirect |
| npm | balanced-match | 1.0.2 | indirect |
| npm | bare-events | 2.9.1 | indirect |
| npm | bare-fs | 4.7.2 | indirect |
| npm | bare-os | 3.9.1 | indirect |
| npm | bare-path | 3.0.1 | indirect |
| npm | bare-stream | 2.13.2 | indirect |
| npm | bare-url | 2.4.5 | indirect |
| npm | base64-js | 1.5.1 | indirect |
| npm | basic-ftp | 5.3.1 | indirect |
| npm | bl | 1.2.3 | indirect |
| npm | boolbase | 1.0.0 | indirect |
| npm | brace-expansion | 1.1.11 | indirect |
| npm | brace-expansion | 2.1.1 | indirect |
| npm | braces | 3.0.3 | indirect |
| npm | buffer | 6.0.3 | indirect |
| npm | buffer-alloc | 1.2.0 | indirect |
| npm | buffer-alloc-unsafe | 1.1.0 | indirect |
| npm | buffer-crc32 | 0.2.13 | indirect |
| npm | buffer-crc32 | 1.0.0 | indirect |
| npm | buffer-fill | 1.0.0 | indirect |
| npm | buffer-from | 1.1.2 | indirect |
| npm | builtin-modules | 3.3.0 | indirect |
| npm | bytes | 3.1.2 | indirect |
| npm | cache-content-type | 1.0.1 | indirect |
| npm | cacheable-lookup | 5.0.4 | indirect |
| npm | cacheable-request | 7.0.4 | indirect |
| npm | call-bind | 1.0.8 | indirect |
| npm | call-bind-apply-helpers | 1.0.2 | indirect |
| npm | call-bound | 1.0.4 | indirect |
| npm | callsites | 3.1.0 | indirect |
| npm | camel-case | 4.1.2 | indirect |
| npm | camelcase | 6.3.0 | indirect |
| npm | capital-case | 1.0.4 | indirect |
| npm | chalk | 2.4.2 | indirect |
| npm | chalk | 4.1.2 | indirect |
| npm | chalk | 5.6.2 | indirect |
| npm | chalk-template | 0.4.0 | indirect |
| npm | change-case | 4.1.2 | indirect |
| npm | cheerio | 1.2.0 | indirect |
| npm | cheerio-select | 2.1.0 | indirect |
| npm | chokidar | 4.0.3 | indirect |
| npm | chrome-launcher | 0.15.2 | indirect |
| npm | chromium-bidi | 14.0.0 | indirect |
| npm | cli-cursor | 3.1.0 | indirect |
| npm | cliui | 8.0.1 | indirect |
| npm | clone | 2.1.2 | indirect |
| npm | clone-response | 1.0.3 | indirect |
| npm | co | 4.6.0 | indirect |
| npm | co-body | 6.2.0 | indirect |
| npm | color-convert | 1.9.3 | indirect |
| npm | color-convert | 2.0.1 | indirect |
| npm | color-name | 1.1.3 | indirect |
| npm | color-name | 1.1.4 | indirect |
| npm | combined-stream | 1.0.8 | indirect |
| npm | command-line-args | 5.2.1 | indirect |
| npm | command-line-usage | 7.0.4 | indirect |
| npm | commander | 2.20.3 | indirect |
| npm | commander | 7.2.0 | indirect |
| npm | commander | 9.5.0 | indirect |
| npm | commondir | 1.0.1 | indirect |
| npm | compress-commons | 6.0.2 | indirect |
| npm | compressing | 1.10.5 | indirect |
| npm | concat-map | 0.0.1 | indirect |
| npm | constant-case | 3.0.4 | indirect |
| npm | content-disposition | 0.5.4 | indirect |
| npm | content-type | 1.0.5 | indirect |
| npm | convert-source-map | 2.0.0 | indirect |
| npm | cookies | 0.9.1 | indirect |
| npm | core-util-is | 1.0.3 | indirect |
| npm | crc-32 | 1.2.2 | indirect |
| npm | crc32-stream | 6.0.0 | indirect |
| npm | cross-spawn | 7.0.6 | indirect |
| npm | css-select | 5.2.2 | indirect |
| npm | css-shorthand-properties | 1.1.2 | indirect |
| npm | css-value | 0.0.1 | indirect |
| npm | css-what | 6.2.2 | indirect |
| npm | data-uri-to-buffer | 6.0.2 | indirect |
| npm | data-view-buffer | 1.0.2 | indirect |
| npm | data-view-byte-length | 1.0.2 | indirect |
| npm | data-view-byte-offset | 1.0.1 | indirect |
| npm | debounce | 1.2.1 | indirect |
| npm | debug | 2.6.9 | indirect |
| npm | debug | 3.2.7 | indirect |
| npm | debug | 4.3.4 | indirect |
| npm | debug | 4.4.3 | indirect |
| npm | decamelize | 6.0.1 | indirect |
| npm | decode-uri-component | 0.2.2 | indirect |
| npm | decompress-response | 6.0.0 | indirect |
| npm | deep-equal | 1.0.1 | indirect |
| npm | deep-is | 0.1.4 | indirect |
| npm | deepmerge | 4.3.1 | indirect |
| npm | deepmerge-ts | 7.1.5 | indirect |
| npm | default-gateway | 6.0.3 | indirect |
| npm | defer-to-connect | 2.0.1 | indirect |
| npm | define-data-property | 1.1.4 | indirect |
| npm | define-lazy-prop | 2.0.0 | indirect |
| npm | define-properties | 1.2.1 | indirect |
| npm | degenerator | 5.0.1 | indirect |
| npm | delayed-stream | 1.0.0 | indirect |
| npm | delegates | 1.0.0 | indirect |
| npm | depd | 1.1.2 | indirect |
| npm | depd | 2.0.0 | indirect |
| npm | dependency-graph | 0.11.0 | indirect |
| npm | destroy | 1.2.0 | indirect |
| npm | devtools-protocol | 0.0.1608973 | indirect |
| npm | diff | 5.2.2 | indirect |
| npm | dir-glob | 3.0.1 | indirect |
| npm | doctrine | 2.1.0 | indirect |
| npm | dom-serializer | 2.0.0 | indirect |
| npm | domelementtype | 2.3.0 | indirect |
| npm | domhandler | 5.0.3 | indirect |
| npm | domutils | 3.2.2 | indirect |
| npm | dot-case | 3.0.4 | indirect |
| npm | dunder-proto | 1.0.1 | indirect |
| npm | eastasianwidth | 0.2.0 | indirect |
| npm | edge-paths | 3.0.5 | indirect |
| npm | edgedriver | 6.3.0 | indirect |
| npm | ee-first | 1.1.1 | indirect |
| npm | emoji-regex | 8.0.0 | indirect |
| npm | emoji-regex | 9.2.2 | indirect |
| npm | encodeurl | 1.0.2 | indirect |
| npm | encoding-sniffer | 0.2.1 | indirect |
| npm | end-of-stream | 1.4.4 | indirect |
| npm | entities | 4.5.0 | indirect |
| npm | entities | 6.0.1 | indirect |
| npm | entities | 7.0.1 | indirect |
| npm | errorstacks | 2.4.2 | indirect |
| npm | es-abstract | 1.24.0 | indirect |
| npm | es-define-property | 1.0.1 | indirect |
| npm | es-errors | 1.3.0 | indirect |
| npm | es-module-lexer | 1.7.0 | indirect |
| npm | es-object-atoms | 1.1.1 | indirect |
| npm | es-set-tostringtag | 2.1.0 | indirect |
| npm | es-shim-unscopables | 1.1.0 | indirect |
| npm | es-to-primitive | 1.3.0 | indirect |
| npm | escalade | 3.2.0 | indirect |
| npm | escape-html | 1.0.3 | indirect |
| npm | escape-string-regexp | 1.0.5 | indirect |
| npm | escape-string-regexp | 4.0.0 | indirect |
| npm | escodegen | 2.1.0 | indirect |
| npm | eslint | 9.37.0 | indirect |
| npm | eslint | ^9.24.0 | indirect |
| npm | eslint-import-resolver-node | 0.3.9 | indirect |
| npm | eslint-module-utils | 2.12.1 | indirect |
| npm | eslint-plugin-import | 2.32.0 | indirect |
| npm | eslint-plugin-import | ^2.31.0 | indirect |
| npm | eslint-scope | 8.4.0 | indirect |
| npm | eslint-visitor-keys | 3.4.3 | indirect |
| npm | eslint-visitor-keys | 4.2.1 | indirect |
| npm | espree | 10.4.0 | indirect |
| npm | esprima | 4.0.1 | indirect |
| npm | esquery | 1.5.0 | indirect |
| npm | esrecurse | 4.3.0 | indirect |
| npm | estraverse | 5.3.0 | indirect |
| npm | estree-walker | 1.0.1 | indirect |
| npm | estree-walker | 2.0.2 | indirect |
| npm | esutils | 2.0.3 | indirect |
| npm | etag | 1.8.1 | indirect |
| npm | event-target-shim | 5.0.1 | indirect |
| npm | events | 3.3.0 | indirect |
| npm | events-universal | 1.0.1 | indirect |
| npm | execa | 5.1.1 | indirect |
| npm | extract-zip | 2.0.1 | indirect |
| npm | fast-deep-equal | 2.0.1 | indirect |
| npm | fast-deep-equal | 3.1.3 | indirect |
| npm | fast-fifo | 1.3.2 | indirect |
| npm | fast-glob | 3.3.3 | indirect |
| npm | fast-json-stable-stringify | 2.1.0 | indirect |
| npm | fast-levenshtein | 2.0.6 | indirect |
| npm | fast-xml-builder | 1.2.0 | indirect |
| npm | fast-xml-parser | 5.8.0 | indirect |
| npm | fastq | 1.20.1 | indirect |
| npm | fd-slicer | 1.1.0 | indirect |
| npm | fd-slicer2 | 1.2.0 | indirect |
| npm | file-entry-cache | 8.0.0 | indirect |
| npm | fill-range | 7.1.1 | indirect |
| npm | filter-obj | 1.1.0 | indirect |
| npm | find-replace | 3.0.0 | indirect |
| npm | find-up | 5.0.0 | indirect |
| npm | flat-cache | 4.0.1 | indirect |
| npm | flatted | 3.3.1 | indirect |
| npm | flushwritable | 1.0.0 | indirect |
| npm | for-each | 0.3.5 | indirect |
| npm | foreground-child | 3.3.1 | indirect |
| npm | form-data | 4.0.5 | indirect |
| npm | fresh | 0.5.2 | indirect |
| npm | fs-constants | 1.0.0 | indirect |
| npm | fs.realpath | 1.0.0 | indirect |
| npm | fsevents | 2.3.3 | indirect |
| npm | function-bind | 1.1.2 | indirect |
| npm | function.prototype.name | 1.1.8 | indirect |
| npm | functions-have-names | 1.2.3 | indirect |
| npm | geckodriver | 6.1.0 | indirect |
| npm | generator-function | 2.0.1 | indirect |
| npm | get-caller-file | 2.0.5 | indirect |
| npm | get-intrinsic | 1.3.0 | indirect |
| npm | get-port | 7.2.0 | indirect |
| npm | get-proto | 1.0.1 | indirect |
| npm | get-ready | 1.0.0 | indirect |
| npm | get-stream | 5.2.0 | indirect |
| npm | get-stream | 6.0.1 | indirect |
| npm | get-symbol-description | 1.1.0 | indirect |
| npm | get-uri | 6.0.5 | indirect |
| npm | glob | 10.5.0 | indirect |
| npm | glob | 7.2.3 | indirect |
| npm | glob-parent | 5.1.2 | indirect |
| npm | glob-parent | 6.0.2 | indirect |
| npm | globals | 14.0.0 | indirect |
| npm | globals | ^14.0.0 | indirect |
| npm | globalthis | 1.0.4 | indirect |
| npm | globalyzer | 0.1.0 | indirect |
| npm | globby | 11.1.0 | indirect |
| npm | globrex | 0.1.2 | indirect |
| npm | gopd | 1.2.0 | indirect |
| npm | got | 11.8.6 | indirect |
| npm | graceful-fs | 4.2.11 | indirect |
| npm | grapheme-splitter | 1.0.4 | indirect |
| npm | has-bigints | 1.1.0 | indirect |
| npm | has-flag | 3.0.0 | indirect |
| npm | has-flag | 4.0.0 | indirect |
| npm | has-property-descriptors | 1.0.2 | indirect |
| npm | has-proto | 1.2.0 | indirect |
| npm | has-symbols | 1.1.0 | indirect |
| npm | has-tostringtag | 1.0.2 | indirect |
| npm | hash.js | 1.1.7 | indirect |
| npm | hasown | 2.0.2 | indirect |
| npm | header-case | 2.0.4 | indirect |
| npm | html-escaper | 2.0.2 | indirect |
| npm | htmlfy | 0.8.1 | indirect |
| npm | htmlparser2 | 10.1.0 | indirect |
| npm | http-assert | 1.5.0 | indirect |
| npm | http-cache-semantics | 4.2.0 | indirect |
| npm | http-errors | 1.6.3 | indirect |
| npm | http-errors | 1.8.1 | indirect |
| npm | http-errors | 2.0.0 | indirect |
| npm | http-proxy-agent | 7.0.2 | indirect |
| npm | http2-wrapper | 1.0.3 | indirect |
| npm | https-proxy-agent | 7.0.6 | indirect |
| npm | human-signals | 2.1.0 | indirect |
| npm | iconv-lite | 0.4.24 | indirect |
| npm | iconv-lite | 0.5.2 | indirect |
| npm | iconv-lite | 0.6.3 | indirect |
| npm | ieee754 | 1.2.1 | indirect |
| npm | ignore | 5.3.2 | indirect |
| npm | immediate | 3.0.6 | indirect |
| npm | import-fresh | 3.3.0 | indirect |
| npm | import-meta-resolve | 4.2.0 | indirect |
| npm | imurmurhash | 0.1.4 | indirect |
| npm | inflation | 2.1.0 | indirect |
| npm | inflight | 1.0.6 | indirect |
| npm | inherits | 2.0.3 | indirect |
| npm | inherits | 2.0.4 | indirect |
| npm | internal-ip | 6.2.0 | indirect |
| npm | internal-slot | 1.1.0 | indirect |
| npm | ip-address | 10.2.0 | indirect |
| npm | ip-regex | 4.3.0 | indirect |
| npm | ipaddr.js | 1.9.1 | indirect |
| npm | is-array-buffer | 3.0.5 | indirect |
| npm | is-async-function | 2.1.1 | indirect |
| npm | is-bigint | 1.1.0 | indirect |
| npm | is-boolean-object | 1.2.2 | indirect |
| npm | is-callable | 1.2.7 | indirect |
| npm | is-core-module | 2.16.1 | indirect |
| npm | is-data-view | 1.0.2 | indirect |
| npm | is-date-object | 1.1.0 | indirect |
| npm | is-docker | 2.2.1 | indirect |
| npm | is-extglob | 2.1.1 | indirect |
| npm | is-finalizationregistry | 1.1.1 | indirect |
| npm | is-fullwidth-code-point | 3.0.0 | indirect |
| npm | is-generator-function | 1.1.2 | indirect |
| npm | is-glob | 4.0.3 | indirect |
| npm | is-ip | 3.1.0 | indirect |
| npm | is-map | 2.0.3 | indirect |
| npm | is-module | 1.0.0 | indirect |
| npm | is-negative-zero | 2.0.3 | indirect |
| npm | is-number | 7.0.0 | indirect |
| npm | is-number-object | 1.1.1 | indirect |
| npm | is-plain-obj | 4.1.0 | indirect |
| npm | is-reference | 1.2.1 | indirect |
| npm | is-regex | 1.2.1 | indirect |
| npm | is-set | 2.0.3 | indirect |
| npm | is-shared-array-buffer | 1.0.4 | indirect |
| npm | is-stream | 2.0.1 | indirect |
| npm | is-string | 1.1.1 | indirect |
| npm | is-symbol | 1.1.1 | indirect |
| npm | is-typed-array | 1.1.15 | indirect |
| npm | is-weakmap | 2.0.2 | indirect |
| npm | is-weakref | 1.1.1 | indirect |
| npm | is-weakset | 2.0.4 | indirect |
| npm | is-wsl | 2.2.0 | indirect |
| npm | isarray | 1.0.0 | indirect |
| npm | isarray | 2.0.5 | indirect |
| npm | isbinaryfile | 5.0.7 | indirect |
| npm | isexe | 2.0.0 | indirect |
| npm | isexe | 4.0.0 | indirect |
| npm | istanbul-lib-coverage | 3.2.2 | indirect |
| npm | istanbul-lib-report | 3.0.1 | indirect |
| npm | istanbul-reports | 3.2.0 | indirect |
| npm | jackspeak | 3.4.3 | indirect |
| npm | jest-worker | 26.6.2 | indirect |
| npm | jiti | 2.7.0 | indirect |
| npm | js-tokens | 4.0.0 | indirect |
| npm | js-yaml | 4.1.0 | indirect |
| npm | json-buffer | 3.0.1 | indirect |
| npm | json-schema-traverse | 0.4.1 | indirect |
| npm | json-stable-stringify-without-jsonify | 1.0.1 | indirect |
| npm | json5 | 1.0.2 | indirect |
| npm | jszip | 3.10.1 | indirect |
| npm | keygrip | 1.1.0 | indirect |
| npm | keyv | 4.5.4 | indirect |
| npm | koa | 2.16.4 | indirect |
| npm | koa-compose | 4.1.0 | indirect |
| npm | koa-convert | 2.0.0 | indirect |
| npm | koa-etag | 4.0.0 | indirect |
| npm | koa-send | 5.0.1 | indirect |
| npm | koa-static | 5.0.0 | indirect |
| npm | lazystream | 1.0.1 | indirect |
| npm | levn | 0.4.1 | indirect |
| npm | lie | 3.3.0 | indirect |
| npm | lighthouse-logger | 1.4.2 | indirect |
| npm | locate-app | 2.5.0 | indirect |
| npm | locate-path | 6.0.0 | indirect |
| npm | lodash | 4.17.21 | indirect |
| npm | lodash.camelcase | 4.3.0 | indirect |
| npm | lodash.clonedeep | 4.5.0 | indirect |
| npm | lodash.merge | 4.6.2 | indirect |
| npm | lodash.zip | 4.2.0 | indirect |
| npm | log-update | 4.0.0 | indirect |
| npm | loglevel | 1.9.2 | indirect |
| npm | loglevel-plugin-prefix | 0.8.4 | indirect |
| npm | lower-case | 2.0.2 | indirect |
| npm | lowercase-keys | 2.0.0 | indirect |
| npm | lru-cache | 10.4.3 | indirect |
| npm | lru-cache | 7.18.3 | indirect |
| npm | lru-cache | 8.0.5 | indirect |
| npm | magic-string | 0.25.9 | indirect |
| npm | make-dir | 4.0.0 | indirect |
| npm | marky | 1.3.0 | indirect |
| npm | math-intrinsics | 1.1.0 | indirect |
| npm | media-typer | 0.3.0 | indirect |
| npm | merge-stream | 2.0.0 | indirect |
| npm | merge2 | 1.4.1 | indirect |
| npm | micromatch | 4.0.8 | indirect |
| npm | mime-db | 1.52.0 | indirect |
| npm | mime-types | 2.1.35 | indirect |
| npm | mimic-fn | 2.1.0 | indirect |
| npm | mimic-response | 1.0.1 | indirect |
| npm | mimic-response | 3.1.0 | indirect |
| npm | minimalistic-assert | 1.0.1 | indirect |
| npm | minimatch | 3.1.2 | indirect |
| npm | minimatch | 5.1.9 | indirect |
| npm | minimatch | 9.0.9 | indirect |
| npm | minimist | 1.2.8 | indirect |
| npm | minipass | 7.1.3 | indirect |
| npm | mitt | 3.0.1 | indirect |
| npm | mkdirp | 0.5.6 | indirect |
| npm | mkdirp | 1.0.4 | indirect |
| npm | mock-socket | 2.0.0 | indirect |
| npm | mock-socket | ^2.0.0 | indirect |
| npm | modern-tar | 0.7.6 | indirect |
| npm | ms | 2.0.0 | indirect |
| npm | ms | 2.1.2 | indirect |
| npm | ms | 2.1.3 | indirect |
| npm | nanocolors | 0.2.13 | indirect |
| npm | nanoid | 3.3.12 | indirect |
| npm | natural-compare | 1.4.0 | indirect |
| npm | negotiator | 0.6.3 | indirect |
| npm | netmask | 2.1.1 | indirect |
| npm | no-case | 3.0.4 | indirect |
| npm | node-watch | 0.7.3 | indirect |
| npm | normalize-path | 3.0.0 | indirect |
| npm | normalize-url | 6.1.0 | indirect |
| npm | npm-run-path | 4.0.1 | indirect |
| npm | nth-check | 2.1.1 | indirect |
| npm | object-inspect | 1.13.4 | indirect |
| npm | object-keys | 1.1.1 | indirect |
| npm | object.assign | 4.1.7 | indirect |
| npm | object.fromentries | 2.0.8 | indirect |
| npm | object.groupby | 1.0.3 | indirect |
| npm | object.values | 1.2.1 | indirect |
| npm | on-finished | 2.4.1 | indirect |
| npm | once | 1.4.0 | indirect |
| npm | onetime | 5.1.2 | indirect |
| npm | only | 0.0.2 | indirect |
| npm | open | 8.4.2 | indirect |
| npm | optionator | 0.9.4 | indirect |
| npm | own-keys | 1.0.1 | indirect |
| npm | p-cancelable | 2.1.1 | indirect |
| npm | p-event | 4.2.0 | indirect |
| npm | p-finally | 1.0.0 | indirect |
| npm | p-limit | 3.1.0 | indirect |
| npm | p-locate | 5.0.0 | indirect |
| npm | p-timeout | 3.2.0 | indirect |
| npm | pac-proxy-agent | 7.2.0 | indirect |
| npm | pac-resolver | 7.0.1 | indirect |
| npm | package-json-from-dist | 1.0.1 | indirect |
| npm | pako | 1.0.11 | indirect |
| npm | param-case | 3.0.4 | indirect |
| npm | parent-module | 1.0.1 | indirect |
| npm | parse5 | 6.0.1 | indirect |
| npm | parse5 | 7.3.0 | indirect |
| npm | parse5-htmlparser2-tree-adapter | 7.1.0 | indirect |
| npm | parse5-parser-stream | 7.1.2 | indirect |
| npm | parseurl | 1.3.3 | indirect |
| npm | pascal-case | 3.1.2 | indirect |
| npm | path-case | 3.0.4 | indirect |
| npm | path-exists | 4.0.0 | indirect |
| npm | path-expression-matcher | 1.5.0 | indirect |
| npm | path-is-absolute | 1.0.1 | indirect |
| npm | path-key | 3.1.1 | indirect |
| npm | path-parse | 1.0.7 | indirect |
| npm | path-scurry | 1.11.1 | indirect |
| npm | path-type | 4.0.0 | indirect |
| npm | pend | 1.2.0 | indirect |
| npm | picomatch | 2.3.1 | indirect |
| npm | picomatch | 4.0.4 | indirect |
| npm | portfinder | 1.0.38 | indirect |
| npm | possible-typed-array-names | 1.1.0 | indirect |
| npm | prelude-ls | 1.2.1 | indirect |
| npm | process | 0.11.10 | indirect |
| npm | process-nextick-args | 2.0.1 | indirect |
| npm | progress | 2.0.3 | indirect |
| npm | proxy-agent | 6.5.0 | indirect |
| npm | proxy-from-env | 1.1.0 | indirect |
| npm | pump | 3.0.4 | indirect |
| npm | punycode | 2.3.0 | indirect |
| npm | punycode | 2.3.1 | indirect |
| npm | puppeteer-core | 24.43.1 | indirect |
| npm | qs | 6.11.0 | indirect |
| npm | query-selector-shadow-dom | 1.0.1 | indirect |
| npm | query-string | 7.1.3 | indirect |
| npm | queue-microtask | 1.2.3 | indirect |
| npm | quick-lru | 5.1.1 | indirect |
| npm | qunit | 2.26.0 | indirect |
| npm | qunit | ^2.20.0 | indirect |
| npm | randombytes | 2.1.0 | indirect |
| npm | raw-body | 2.5.2 | indirect |
| npm | readable-stream | 2.3.8 | indirect |
| npm | readable-stream | 4.7.0 | indirect |
| npm | readdir-glob | 1.1.3 | indirect |
| npm | readdirp | 4.1.2 | indirect |
| npm | reflect.getprototypeof | 1.0.10 | indirect |
| npm | regexp.prototype.flags | 1.5.4 | indirect |
| npm | require-directory | 2.1.1 | indirect |
| npm | resolve | 1.22.2 | indirect |
| npm | resolve | 1.22.8 | indirect |
| npm | resolve-alpn | 1.2.1 | indirect |
| npm | resolve-from | 4.0.0 | indirect |
| npm | resolve-path | 1.4.0 | indirect |
| npm | responselike | 2.0.1 | indirect |
| npm | resq | 1.11.0 | indirect |
| npm | restore-cursor | 3.1.0 | indirect |
| npm | ret | 0.5.0 | indirect |
| npm | reusify | 1.1.0 | indirect |
| npm | rgb2hex | 0.2.5 | indirect |
| npm | rollup | 2.79.1 | indirect |
| npm | rollup | 4.61.1 | indirect |
| npm | rollup | ^2.35.1 | indirect |
| npm | rollup-plugin-terser | 7.0.2 | indirect |
| npm | rollup-plugin-terser | ^7.0.2 | indirect |
| npm | run-parallel | 1.2.0 | indirect |
| npm | safaridriver | 1.0.1 | indirect |
| npm | safe-array-concat | 1.1.3 | indirect |
| npm | safe-buffer | 5.1.2 | indirect |
| npm | safe-buffer | 5.2.1 | indirect |
| npm | safe-push-apply | 1.0.0 | indirect |
| npm | safe-regex-test | 1.1.0 | indirect |
| npm | safe-regex2 | 5.1.1 | indirect |
| npm | safer-buffer | 2.1.2 | indirect |
| npm | saucelabs | 9.0.2 | indirect |
| npm | semver | 6.3.1 | indirect |
| npm | semver | 7.8.4 | indirect |
| npm | sentence-case | 3.0.4 | indirect |
| npm | serialize-error | 12.0.0 | indirect |
| npm | serialize-javascript | 4.0.0 | indirect |
| npm | set-function-length | 1.2.2 | indirect |
| npm | set-function-name | 2.0.2 | indirect |
| npm | set-proto | 1.0.0 | indirect |
| npm | setimmediate | 1.0.5 | indirect |
| npm | setprototypeof | 1.1.0 | indirect |
| npm | setprototypeof | 1.2.0 | indirect |
| npm | shebang-command | 2.0.0 | indirect |
| npm | shebang-regex | 3.0.0 | indirect |
| npm | side-channel | 1.1.0 | indirect |
| npm | side-channel-list | 1.0.0 | indirect |
| npm | side-channel-map | 1.0.1 | indirect |
| npm | side-channel-weakmap | 1.0.2 | indirect |
| npm | signal-exit | 3.0.7 | indirect |
| npm | signal-exit | 4.1.0 | indirect |
| npm | slash | 3.0.0 | indirect |
| npm | slice-ansi | 4.0.0 | indirect |
| npm | smart-buffer | 4.2.0 | indirect |
| npm | snake-case | 3.0.4 | indirect |
| npm | socks | 2.8.9 | indirect |
| npm | socks-proxy-agent | 8.0.5 | indirect |
| npm | source-map | 0.6.1 | indirect |
| npm | source-map | 0.7.6 | indirect |
| npm | source-map-support | 0.5.21 | indirect |
| npm | sourcemap-codec | 1.4.8 | indirect |
| npm | spacetrim | 0.11.59 | indirect |
| npm | split-on-first | 1.1.0 | indirect |
| npm | split2 | 4.2.0 | indirect |
| npm | statuses | 1.5.0 | indirect |
| npm | statuses | 2.0.1 | indirect |
| npm | stop-iteration-iterator | 1.1.0 | indirect |
| npm | streamifier | 0.1.1 | indirect |
| npm | streamx | 2.27.0 | indirect |
| npm | strict-uri-encode | 2.0.0 | indirect |
| npm | string-width | 4.2.3 | indirect |
| npm | string-width | 5.1.2 | indirect |
| npm | string-width-cjs | 4.2.3 | indirect |
| npm | string.prototype.trim | 1.2.10 | indirect |
| npm | string.prototype.trimend | 1.0.9 | indirect |
| npm | string.prototype.trimstart | 1.0.8 | indirect |
| npm | string_decoder | 1.1.1 | indirect |
| npm | string_decoder | 1.3.0 | indirect |
| npm | strip-ansi | 6.0.1 | indirect |
| npm | strip-ansi | 7.2.0 | indirect |
| npm | strip-ansi-cjs | 6.0.1 | indirect |
| npm | strip-bom | 3.0.0 | indirect |
| npm | strip-final-newline | 2.0.0 | indirect |
| npm | strip-json-comments | 3.1.1 | indirect |
| npm | strnum | 2.4.0 | indirect |
| npm | supports-color | 5.5.0 | indirect |
| npm | supports-color | 7.2.0 | indirect |
| npm | supports-preserve-symlinks-flag | 1.0.0 | indirect |
| npm | table-layout | 4.1.1 | indirect |
| npm | tar-fs | 3.1.2 | indirect |
| npm | tar-stream | 1.6.2 | indirect |
| npm | tar-stream | 3.2.0 | indirect |
| npm | teex | 1.0.1 | indirect |
| npm | terser | 5.18.2 | indirect |
| npm | text-decoder | 1.2.7 | indirect |
| npm | tiny-glob | 0.2.9 | indirect |
| npm | to-buffer | 1.2.2 | indirect |
| npm | to-regex-range | 5.0.1 | indirect |
| npm | toidentifier | 1.0.1 | indirect |
| npm | tr46 | 5.1.1 | indirect |
| npm | trix | 2.0.5 | indirect |
| npm | trix | ^2.0.0 | indirect |
| npm | tsconfig-paths | 3.15.0 | indirect |
| npm | tslib | 2.8.1 | indirect |
| npm | tsscmp | 1.0.6 | indirect |
| npm | tunnel | 0.0.6 | indirect |
| npm | type-check | 0.4.0 | indirect |
| npm | type-fest | 0.21.3 | indirect |
| npm | type-fest | 4.26.0 | indirect |
| npm | type-fest | 4.41.0 | indirect |
| npm | type-is | 1.6.18 | indirect |
| npm | typed-array-buffer | 1.0.3 | indirect |
| npm | typed-array-byte-length | 1.0.3 | indirect |
| npm | typed-array-byte-offset | 1.0.4 | indirect |
| npm | typed-array-length | 1.0.7 | indirect |
| npm | typed-query-selector | 2.12.2 | indirect |
| npm | typical | 4.0.0 | indirect |
| npm | typical | 7.3.0 | indirect |
| npm | unbox-primitive | 1.1.0 | indirect |
| npm | undici | 6.26.0 | indirect |
| npm | undici | 7.27.2 | indirect |
| npm | undici-types | 6.21.0 | indirect |
| npm | unpipe | 1.0.0 | indirect |
| npm | upper-case | 2.0.2 | indirect |
| npm | upper-case-first | 2.0.2 | indirect |
| npm | uri-js | 4.4.1 | indirect |
| npm | urijs | 1.17.1 | indirect |
| npm | urlpattern-polyfill | 10.1.0 | indirect |
| npm | userhome | 1.0.1 | indirect |
| npm | util-deprecate | 1.0.2 | indirect |
| npm | v8-to-istanbul | 9.3.0 | indirect |
| npm | vary | 1.1.2 | indirect |
| npm | wait-port | 1.1.0 | indirect |
| npm | web-test-runner-qunit | 2.0.0 | indirect |
| npm | web-test-runner-qunit | ^2.0.0 | indirect |
| npm | webdriver | 9.28.0 | indirect |
| npm | webdriver-bidi-protocol | 0.4.1 | indirect |
| npm | webdriverio | 9.28.0 | indirect |
| npm | webidl-conversions | 7.0.0 | indirect |
| npm | whatwg-encoding | 3.1.1 | indirect |
| npm | whatwg-mimetype | 4.0.0 | indirect |
| npm | whatwg-url | 14.2.0 | indirect |
| npm | which | 2.0.2 | indirect |
| npm | which | 6.0.1 | indirect |
| npm | which-boxed-primitive | 1.1.1 | indirect |
| npm | which-builtin-type | 1.2.1 | indirect |
| npm | which-collection | 1.0.2 | indirect |
| npm | which-typed-array | 1.1.19 | indirect |
| npm | word-wrap | 1.2.5 | indirect |
| npm | wordwrapjs | 5.1.1 | indirect |
| npm | wrap-ansi | 6.2.0 | indirect |
| npm | wrap-ansi | 7.0.0 | indirect |
| npm | wrap-ansi | 8.1.0 | indirect |
| npm | wrap-ansi-cjs | 7.0.0 | indirect |
| npm | wrappy | 1.0.2 | indirect |
| npm | ws | 7.5.11 | indirect |
| npm | ws | 8.21.0 | indirect |
| npm | xml-naming | 0.1.0 | indirect |
| npm | xtend | 4.0.2 | indirect |
| npm | y18n | 5.0.8 | indirect |
| npm | yargs | 17.7.2 | indirect |
| npm | yargs-parser | 21.1.1 | indirect |
| npm | yauzl | 2.10.0 | indirect |
| npm | yazl | 2.5.1 | indirect |
| npm | ylru | 1.4.0 | indirect |
| npm | yocto-queue | 0.1.0 | indirect |
| npm | zip-stream | 6.0.1 | indirect |
| npm | zod | 3.25.76 | indirect |
| RubyGems | action_text-trix | — | indirect |
| RubyGems | action_text-trix | 2.1.16 | indirect |
| RubyGems | addressable | 2.8.7 | indirect |
| RubyGems | amq-protocol | 2.3.2 | indirect |
| RubyGems | ast | 2.4.2 | indirect |
| RubyGems | aws-eventstream | 1.4.0 | indirect |
| RubyGems | aws-partitions | 1.1150.0 | indirect |
| RubyGems | aws-sdk-core | 3.230.0 | indirect |
| RubyGems | aws-sdk-kms | 1.110.0 | indirect |
| RubyGems | aws-sigv4 | 1.12.1 | indirect |
| RubyGems | base64 | — | indirect |
| RubyGems | base64 | 0.3.0 | indirect |
| RubyGems | bcrypt_pbkdf | 1.1.1 | indirect |
| RubyGems | beaneater | 1.1.3 | indirect |
| RubyGems | bigdecimal | — | indirect |
| RubyGems | bigdecimal | 4.1.2 | indirect |
| RubyGems | bindex | 0.8.1 | indirect |
| RubyGems | builder | — | indirect |
| RubyGems | builder | 3.3.0 | indirect |
| RubyGems | bundler | — | indirect |
| RubyGems | bunny | 2.23.0 | indirect |
| RubyGems | byebug | — | indirect |
| RubyGems | chef-utils | 18.6.2 | indirect |
| RubyGems | childprocess | 5.1.0 | indirect |
| RubyGems | chromedriver-helper | — | indirect |
| RubyGems | concurrent-ruby | — | indirect |
| RubyGems | concurrent-ruby | 1.3.6 | indirect |
| RubyGems | crack | 1.0.0 | indirect |
| RubyGems | crass | 1.0.6 | indirect |
| RubyGems | dante | 0.2.0 | indirect |
| RubyGems | date | 3.4.1 | indirect |
| RubyGems | debug | 1.10.0 | indirect |
| RubyGems | declarative | 0.0.20 | indirect |
| RubyGems | digest-crc | 0.6.5 | indirect |
| RubyGems | dotenv | 3.1.7 | indirect |
| RubyGems | drb | — | indirect |
| RubyGems | drb | 2.2.3 | indirect |
| RubyGems | ed25519 | 1.3.0 | indirect |
| RubyGems | erb | 5.1.1 | indirect |
| RubyGems | erubi | — | indirect |
| RubyGems | erubi | 1.13.1 | indirect |
| RubyGems | et-orbi | 1.2.11 | indirect |
| RubyGems | event_emitter | 0.2.6 | indirect |
| RubyGems | execjs | 2.10.0 | indirect |
| RubyGems | faraday | 2.14.0 | indirect |
| RubyGems | faraday-net_http | 3.4.2 | indirect |
| RubyGems | ffi | 1.17.1 | indirect |
| RubyGems | ffi-compiler | 1.3.2 | indirect |
| RubyGems | fugit | 1.11.1 | indirect |
| RubyGems | globalid | — | indirect |
| RubyGems | globalid | 1.4.0 | indirect |
| RubyGems | google-apis-core | 0.15.1 | indirect |
| RubyGems | google-apis-iamcredentials_v1 | 0.22.0 | indirect |
| RubyGems | google-apis-storage_v1 | 0.49.0 | indirect |
| RubyGems | google-cloud-core | 1.7.1 | indirect |
| RubyGems | google-cloud-env | 2.2.1 | indirect |
| RubyGems | google-cloud-errors | 1.4.0 | indirect |
| RubyGems | google-logging-utils | 0.1.0 | indirect |
| RubyGems | google-protobuf | 4.29.3 | indirect |
| RubyGems | googleauth | 1.12.2 | indirect |
| RubyGems | hashdiff | 1.1.2 | indirect |
| RubyGems | httpclient | 2.9.0 | indirect |
| RubyGems | i18n | — | indirect |
| RubyGems | i18n | 1.14.8 | indirect |
| RubyGems | io-console | 0.8.1 | indirect |
| RubyGems | irb | — | indirect |
| RubyGems | irb | 1.15.2 | indirect |
| RubyGems | jmespath | 1.6.2 | indirect |
| RubyGems | jwt | 2.10.1 | indirect |
| RubyGems | kramdown | 2.5.1 | indirect |
| RubyGems | kramdown-parser-gfm | 1.1.0 | indirect |
| RubyGems | language_server-protocol | 3.17.0.3 | indirect |
| RubyGems | lint_roller | 1.1.0 | indirect |
| RubyGems | logger | — | indirect |
| RubyGems | logger | 1.7.0 | indirect |
| RubyGems | loofah | 2.25.0 | indirect |
| RubyGems | — | indirect | |
| RubyGems | 2.8.1 | indirect | |
| RubyGems | marcel | — | indirect |
| RubyGems | marcel | 1.2.1 | indirect |
| RubyGems | matrix | 0.4.2 | indirect |
| RubyGems | mini_mime | 1.1.5 | indirect |
| RubyGems | mini_portile2 | 2.8.9 | indirect |
| RubyGems | minitest-retry | 0.2.3 | indirect |
| RubyGems | mixlib-cli | 2.1.8 | indirect |
| RubyGems | mixlib-config | 3.0.27 | indirect |
| RubyGems | mixlib-shellout | 3.3.4 | indirect |
| RubyGems | mono_logger | 1.1.2 | indirect |
| RubyGems | multi_json | 1.15.0 | indirect |
| RubyGems | mustermann | 3.0.4 | indirect |
| RubyGems | mutex_m | 0.3.0 | indirect |
| RubyGems | net-http | 0.6.0 | indirect |
| RubyGems | net-http | 0.9.1 | indirect |
| RubyGems | net-imap | 0.5.5 | indirect |
| RubyGems | net-pop | 0.1.2 | indirect |
| RubyGems | net-protocol | 0.2.2 | indirect |
| RubyGems | net-scp | 4.0.0 | indirect |
| RubyGems | net-sftp | 4.0.0 | indirect |
| RubyGems | net-smtp | 0.5.1 | indirect |
| RubyGems | net-ssh | 7.3.0 | indirect |
| RubyGems | nio4r | — | indirect |
| RubyGems | nio4r | 2.7.4 | indirect |
| RubyGems | os | 1.1.4 | indirect |
| RubyGems | ostruct | 0.6.1 | indirect |
| RubyGems | parallel | 1.26.3 | indirect |
| RubyGems | parser | 3.3.9.0 | indirect |
| RubyGems | pp | 0.6.2 | indirect |
| RubyGems | prettyprint | 0.2.0 | indirect |
| RubyGems | protobug | 0.1.0 | indirect |
| RubyGems | protobug_googleapis_field_behavior_protos | 0.1.0 | indirect |
| RubyGems | protobug_sigstore_protos | 0.1.0 | indirect |
| RubyGems | protobug_well_known_protos | 0.1.0 | indirect |
| RubyGems | psych | — | indirect |
| RubyGems | psych | 5.2.6 | indirect |
| RubyGems | public_suffix | 6.0.1 | indirect |
| RubyGems | raabro | 1.4.0 | indirect |
| RubyGems | racc | 1.8.1 | indirect |
| RubyGems | rack-protection | 4.1.1 | indirect |
| RubyGems | rack-session | — | indirect |
| RubyGems | rack-session | 2.1.1 | indirect |
| RubyGems | rack-test | — | indirect |
| RubyGems | rack-test | 2.2.0 | indirect |
| RubyGems | rackup | — | indirect |
| RubyGems | rackup | 2.2.1 | indirect |
| RubyGems | ractor-dispatch | — | indirect |
| RubyGems | ractor-dispatch | 0.2.0 | indirect |
| RubyGems | rails-dom-testing | — | indirect |
| RubyGems | rails-dom-testing | 2.3.0 | indirect |
| RubyGems | rails-html-sanitizer | — | indirect |
| RubyGems | rails-html-sanitizer | 1.7.0 | indirect |
| RubyGems | rainbow | 3.1.1 | indirect |
| RubyGems | rake | — | indirect |
| RubyGems | rake | 13.2.1 | indirect |
| RubyGems | rake | 13.3.0 | indirect |
| RubyGems | rb-fsevent | 0.11.2 | indirect |
| RubyGems | rb-inotify | 0.11.1 | indirect |
| RubyGems | rbtree | 0.4.7 | indirect |
| RubyGems | rdoc | 6.15.0 | indirect |
| RubyGems | regexp_parser | 2.10.0 | indirect |
| RubyGems | reline | 0.6.1 | indirect |
| RubyGems | representable | 3.2.0 | indirect |
| RubyGems | retriable | 3.1.2 | indirect |
| RubyGems | rubocop-ast | 1.46.0 | indirect |
| RubyGems | ruby-progressbar | 1.13.0 | indirect |
| RubyGems | ruby2_keywords | 0.0.5 | indirect |
| RubyGems | rufus-scheduler | 3.9.2 | indirect |
| RubyGems | sass-embedded | 1.83.4 | indirect |
| RubyGems | securerandom | — | indirect |
| RubyGems | securerandom | 0.4.1 | indirect |
| RubyGems | serverengine | 2.0.7 | indirect |
| RubyGems | set | 1.1.2 | indirect |
| RubyGems | sigdump | 0.2.5 | indirect |
| RubyGems | signet | 0.19.0 | indirect |
| RubyGems | sigstore | 0.2.2 | indirect |
| RubyGems | sigstore-cli | 0.2.2 | indirect |
| RubyGems | sinatra | 4.1.1 | indirect |
| RubyGems | sorted_set | 1.0.3 | indirect |
| RubyGems | spring | — | indirect |
| RubyGems | spring-watcher-listen | — | indirect |
| RubyGems | sprockets | 4.2.1 | indirect |
| RubyGems | sshkit | 1.23.2 | indirect |
| RubyGems | stackprof | 0.2.28 | indirect |
| RubyGems | stringio | 3.1.7 | indirect |
| RubyGems | tailwindcss-ruby | 3.4.17 | indirect |
| RubyGems | thor | — | indirect |
| RubyGems | thor | 1.3.2 | indirect |
| RubyGems | thor | 1.4.0 | indirect |
| RubyGems | tilt | 2.6.1 | indirect |
| RubyGems | timeout | — | indirect |
| RubyGems | timeout | 0.4.3 | indirect |
| RubyGems | tomlrb | 2.0.3 | indirect |
| RubyGems | trailblazer-option | 0.1.2 | indirect |
| RubyGems | tsort | — | indirect |
| RubyGems | tsort | 0.2.0 | indirect |
| RubyGems | tzinfo | — | indirect |
| RubyGems | tzinfo | 2.0.6 | indirect |
| RubyGems | uber | 0.1.0 | indirect |
| RubyGems | unicode-display_width | 3.1.4 | indirect |
| RubyGems | unicode-emoji | 4.2.0 | indirect |
| RubyGems | websocket | 1.2.11 | indirect |
| RubyGems | websocket-driver | — | indirect |
| RubyGems | websocket-driver | 0.7.7 | indirect |
| RubyGems | websocket-extensions | 0.1.5 | indirect |
| RubyGems | xpath | 3.2.0 | indirect |
| RubyGems | zeitwerk | — | indirect |
| RubyGems | zeitwerk | 2.7.3 | indirect |
Installing npm:@rails/actiontext@8.1.300 pulls in 2 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.
No known advisories affect the assessed dependencies.
An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.
{
"data": {
"repo": {
"topics": [
"rails",
"mvc",
"html",
"activerecord",
"activejob",
"ruby",
"framework"
],
"is_fork": false,
"size_kb": 285875,
"has_wiki": false,
"homepage": "https://rubyonrails.org",
"languages": {
"CSS": 27100,
"HTML": 205540,
"Ruby": 18796344,
"SCSS": 50851,
"Shell": 626,
"Dockerfile": 2104,
"JavaScript": 243792
},
"pushed_at": "2026-07-21T23:14:06Z",
"created_at": "2008-04-11T02:19:47Z",
"owner_type": "Organization",
"updated_at": "2026-07-21T23:14:14Z",
"description": "Ruby on Rails",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": "https://rubyonrails.org/",
"name": "Ruby on Rails",
"type": "Organization",
"login": "rails",
"company": null,
"location": null,
"followers": 2680,
"avatar_url": "https://avatars.githubusercontent.com/u/4223?v=4",
"created_at": "2008-04-02T01:59:25Z",
"is_verified": null,
"public_repos": 127,
"account_age_days": 6684
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v8.1.3",
"kind": "patch",
"published_at": "2026-03-24T20:26:02Z"
},
{
"tag": "v8.0.5",
"kind": "patch",
"published_at": "2026-03-24T20:19:33Z"
},
{
"tag": "v8.1.2.1",
"kind": "other",
"published_at": "2026-03-23T19:42:42Z"
},
{
"tag": "v8.0.4.1",
"kind": "other",
"published_at": "2026-03-23T19:38:25Z"
},
{
"tag": "v7.2.3.1",
"kind": "other",
"published_at": "2026-03-23T19:32:34Z"
},
{
"tag": "v8.1.2",
"kind": "patch",
"published_at": "2026-01-08T20:17:17Z"
},
{
"tag": "v8.1.1",
"kind": "patch",
"published_at": "2025-10-28T23:46:29Z"
},
{
"tag": "v8.0.4",
"kind": "patch",
"published_at": "2025-10-28T23:43:23Z"
},
{
"tag": "v7.2.3",
"kind": "patch",
"published_at": "2025-10-28T23:24:18Z"
},
{
"tag": "v7.1.6",
"kind": "patch",
"published_at": "2025-10-28T23:19:19Z"
},
{
"tag": "v7.0.10",
"kind": "patch",
"published_at": "2025-10-28T23:12:55Z"
},
{
"tag": "v7.0.9",
"kind": "patch",
"published_at": "2025-10-28T23:02:29Z"
},
{
"tag": "v8.1.0",
"kind": "minor",
"published_at": "2025-10-22T00:35:05Z"
},
{
"tag": "v8.1.0.rc1",
"kind": "other",
"published_at": "2025-10-15T00:50:43Z"
},
{
"tag": "v8.0.3",
"kind": "patch",
"published_at": "2025-09-22T22:19:48Z"
},
{
"tag": "v8.1.0.beta1",
"kind": "other",
"published_at": "2025-09-04T12:30:05Z"
},
{
"tag": "v8.0.2.1",
"kind": "other",
"published_at": "2025-08-13T20:38:30Z"
},
{
"tag": "v7.2.2.2",
"kind": "other",
"published_at": "2025-08-13T20:34:07Z"
},
{
"tag": "v7.1.5.2",
"kind": "other",
"published_at": "2025-08-13T20:28:35Z"
},
{
"tag": "v8.0.2",
"kind": "patch",
"published_at": "2025-03-12T03:06:51Z"
},
{
"tag": "v8.0.1",
"kind": "patch",
"published_at": "2024-12-13T20:01:53Z"
},
{
"tag": "v8.0.0.1",
"kind": "other",
"published_at": "2024-12-10T21:45:36Z"
},
{
"tag": "v7.2.2.1",
"kind": "other",
"published_at": "2024-12-10T21:41:16Z"
},
{
"tag": "v7.1.5.1",
"kind": "other",
"published_at": "2024-12-10T21:26:33Z"
},
{
"tag": "v7.0.8.7",
"kind": "other",
"published_at": "2024-12-10T21:21:23Z"
},
{
"tag": "v8.0.0",
"kind": "major",
"published_at": "2024-11-07T22:29:02Z"
},
{
"tag": "v7.2.2",
"kind": "patch",
"published_at": "2024-10-31T01:44:10Z"
},
{
"tag": "v7.1.5",
"kind": "patch",
"published_at": "2024-10-31T01:29:29Z"
},
{
"tag": "v8.0.0.rc2",
"kind": "other",
"published_at": "2024-10-30T00:31:09Z"
},
{
"tag": "v7.2.1.2",
"kind": "other",
"published_at": "2024-10-23T22:33:56Z"
},
{
"tag": "v7.1.4.2",
"kind": "other",
"published_at": "2024-10-23T22:28:10Z"
},
{
"tag": "v7.0.8.6",
"kind": "other",
"published_at": "2024-10-23T22:21:39Z"
},
{
"tag": "v6.1.7.10",
"kind": "other",
"published_at": "2024-10-23T21:57:06Z"
},
{
"tag": "v8.0.0.rc1",
"kind": "other",
"published_at": "2024-10-19T01:38:20Z"
},
{
"tag": "v6.1.7.9",
"kind": "other",
"published_at": "2024-10-15T21:24:11Z"
},
{
"tag": "v7.2.1.1",
"kind": "other",
"published_at": "2024-10-15T20:45:37Z"
},
{
"tag": "v7.1.4.1",
"kind": "other",
"published_at": "2024-10-15T20:39:03Z"
},
{
"tag": "v7.0.8.5",
"kind": "other",
"published_at": "2024-10-15T20:23:05Z"
},
{
"tag": "v8.0.0.beta1",
"kind": "other",
"published_at": "2024-09-26T15:04:39Z"
},
{
"tag": "v7.1.4",
"kind": "patch",
"published_at": "2024-08-22T21:29:51Z"
},
{
"tag": "v7.2.1",
"kind": "patch",
"published_at": "2024-08-22T19:49:00Z"
},
{
"tag": "v7.2.0",
"kind": "minor",
"published_at": "2024-08-10T00:04:51Z"
},
{
"tag": "v7.2.0.rc1",
"kind": "other",
"published_at": "2024-08-06T19:33:29Z"
},
{
"tag": "v7.2.0.beta3",
"kind": "other",
"published_at": "2024-07-11T16:05:58Z"
},
{
"tag": "v7.2.0.beta2",
"kind": "other",
"published_at": "2024-06-04T18:18:39Z"
},
{
"tag": "v7.1.3.4",
"kind": "other",
"published_at": "2024-06-04T18:07:09Z"
},
{
"tag": "v7.0.8.4",
"kind": "other",
"published_at": "2024-06-04T18:06:59Z"
},
{
"tag": "v6.1.7.8",
"kind": "other",
"published_at": "2024-06-04T18:06:31Z"
},
{
"tag": "v7.2.0.beta1",
"kind": "other",
"published_at": "2024-05-31T18:45:55Z"
},
{
"tag": "v7.1.3.3",
"kind": "other",
"published_at": "2024-05-16T19:31:49Z"
},
{
"tag": "v7.0.8.2",
"kind": "other",
"published_at": "2024-05-16T19:31:05Z"
},
{
"tag": "v7.1.3.2",
"kind": "other",
"published_at": "2024-02-21T21:52:08Z"
},
{
"tag": "v7.1.3.1",
"kind": "other",
"published_at": "2024-02-21T18:55:01Z"
},
{
"tag": "v7.0.8.1",
"kind": "other",
"published_at": "2024-02-21T18:53:35Z"
},
{
"tag": "v6.1.7.7",
"kind": "other",
"published_at": "2024-02-21T18:51:33Z"
},
{
"tag": "v7.1.3",
"kind": "patch",
"published_at": "2024-01-16T23:02:49Z"
},
{
"tag": "v7.1.2",
"kind": "patch",
"published_at": "2023-11-10T21:53:46Z"
},
{
"tag": "v7.1.1",
"kind": "patch",
"published_at": "2023-10-11T22:21:29Z"
},
{
"tag": "v7.1.0",
"kind": "minor",
"published_at": "2023-10-05T08:29:20Z"
},
{
"tag": "v7.1.0.rc2",
"kind": "other",
"published_at": "2023-10-01T22:03:04Z"
},
{
"tag": "v7.1.0.rc1",
"kind": "other",
"published_at": "2023-09-27T04:05:07Z"
},
{
"tag": "v7.1.0.beta1",
"kind": "other",
"published_at": "2023-09-13T00:43:13Z"
},
{
"tag": "v7.0.8",
"kind": "patch",
"published_at": "2023-09-09T19:38:03Z"
},
{
"tag": "v7.0.7.2",
"kind": "other",
"published_at": "2023-08-22T20:23:46Z"
},
{
"tag": "v6.1.7.6",
"kind": "other",
"published_at": "2023-08-22T20:23:23Z"
},
{
"tag": "v7.0.7.1",
"kind": "other",
"published_at": "2023-08-22T17:34:13Z"
},
{
"tag": "v6.1.7.5",
"kind": "other",
"published_at": "2023-08-22T17:33:09Z"
},
{
"tag": "v7.0.7",
"kind": "patch",
"published_at": "2023-08-10T00:02:23Z"
},
{
"tag": "v7.0.6",
"kind": "patch",
"published_at": "2023-06-29T21:03:45Z"
},
{
"tag": "v7.0.5.1",
"kind": "other",
"published_at": "2023-06-26T21:48:04Z"
},
{
"tag": "v6.1.7.4",
"kind": "other",
"published_at": "2023-06-26T21:33:01Z"
},
{
"tag": "v7.0.5",
"kind": "patch",
"published_at": "2023-05-24T19:25:11Z"
},
{
"tag": "v7.0.4.3",
"kind": "other",
"published_at": "2023-03-13T18:58:20Z"
},
{
"tag": "v6.1.7.3",
"kind": "other",
"published_at": "2023-03-13T18:59:12Z"
},
{
"tag": "v6.1.7.2",
"kind": "other",
"published_at": "2023-01-25T03:25:32Z"
},
{
"tag": "v7.0.4.2",
"kind": "other",
"published_at": "2023-01-25T03:26:02Z"
},
{
"tag": "v7.0.4.1",
"kind": "other",
"published_at": "2023-01-17T21:31:09Z"
},
{
"tag": "v6.1.7.1",
"kind": "other",
"published_at": "2023-01-17T21:30:34Z"
},
{
"tag": "v6.0.6.1",
"kind": "other",
"published_at": "2023-01-17T21:29:48Z"
},
{
"tag": "v7.0.4",
"kind": "patch",
"published_at": "2022-09-09T19:17:17Z"
},
{
"tag": "v6.1.7",
"kind": "patch",
"published_at": "2022-09-09T19:15:59Z"
},
{
"tag": "v6.0.6",
"kind": "patch",
"published_at": "2022-09-09T19:14:39Z"
},
{
"tag": "v7.0.3.1",
"kind": "other",
"published_at": "2022-11-23T19:11:54Z"
},
{
"tag": "v6.1.6.1",
"kind": "other",
"published_at": "2022-11-23T19:11:16Z"
},
{
"tag": "v6.0.5.1",
"kind": "other",
"published_at": "2022-11-23T19:10:08Z"
},
{
"tag": "v5.2.8.1",
"kind": "other",
"published_at": "2022-11-23T19:06:24Z"
},
{
"tag": "v5.2.8",
"kind": "patch",
"published_at": "2022-05-12T19:57:51Z"
},
{
"tag": "v6.0.5",
"kind": "patch",
"published_at": "2022-05-12T20:06:38Z"
},
{
"tag": "v6.1.6",
"kind": "patch",
"published_at": "2022-05-12T20:12:37Z"
},
{
"tag": "v7.0.3",
"kind": "patch",
"published_at": "2022-05-12T20:30:17Z"
},
{
"tag": "v7.0.2.4",
"kind": "other",
"published_at": "2022-05-12T19:32:57Z"
},
{
"tag": "v6.1.5.1",
"kind": "other",
"published_at": "2022-05-12T19:31:38Z"
},
{
"tag": "v6.0.4.8",
"kind": "other",
"published_at": "2022-05-12T19:29:24Z"
},
{
"tag": "v5.2.7.1",
"kind": "other",
"published_at": "2022-05-12T19:22:42Z"
},
{
"tag": "v5.2.7",
"kind": "patch",
"published_at": "2022-03-11T00:02:36Z"
},
{
"tag": "v6.1.5",
"kind": "patch",
"published_at": "2022-03-10T21:23:09Z"
},
{
"tag": "v7.0.2.3",
"kind": "other",
"published_at": "2022-03-08T21:57:10Z"
},
{
"tag": "v6.1.4.7",
"kind": "other",
"published_at": "2022-03-08T21:55:58Z"
},
{
"tag": "v6.0.4.7",
"kind": "other",
"published_at": "2022-03-08T21:54:42Z"
},
{
"tag": "v5.2.6.3",
"kind": "other",
"published_at": "2022-03-08T21:53:43Z"
}
],
"recent_commits": [
{
"oid": "76998f5e68b248b0dfce019336d0039431c05881",
"body": "Deprecate RedisCacheStore::DEFAULT_REDIS_OPTIONS",
"is_bot": false,
"headline": "Merge pull request #58191 from Shopify/deprecate-redis-default-options",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T23:14:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d3a214d0b6b0963db90c8437bce713f6c5989b6",
"body": "Remove unused test methods",
"is_bot": false,
"headline": "Merge pull request #58193 from Shopify/remove-unused-test-methods",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T23:13:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "defcece906602bfa0fdf06b7cc180bee1eb74736",
"body": "…hods\n\nRemove unused Routing::HTTP_METHODS constant",
"is_bot": false,
"headline": "Merge pull request #58192 from Shopify/remove-unused-routing-http-met…",
"author_name": "Gannon McGibbon",
"author_login": "gmcgibbon",
"committed_at": "2026-07-21T22:56:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a7e0bdf49342e8d98b00f2632fb88a8902ec759",
"body": "Restore unregistered tests",
"is_bot": false,
"headline": "Merge pull request #58194 from Shopify/restore-unregistered-tests",
"author_name": "Gannon McGibbon",
"author_login": "gmcgibbon",
"committed_at": "2026-07-21T22:55:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5623386a0dd695d6ef96b8f7329c2732f9aa375b",
"body": "Add the missing test_ prefixes to six test methods that Minitest never registered. The restored tests cover controller sessions, finder ordering with query constraints, composite primary key detection, and authentication generator behavior with non-Minitest frameworks.",
"is_bot": false,
"headline": "Restore unregistered tests",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T22:30:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c40b4e21eb9f57bd8ab27e07c9cb160a3c25e0d",
"body": "Remove 24 test-only methods and accessors whose callers were deleted or which were introduced without callers. Rubydex, repo-wide reference checks, and history review exclude dynamic callback, interpolation, protocol, and nested-attribute entry points.",
"is_bot": false,
"headline": "Remove unused test methods",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T22:19:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd558d7271f6743a3d1588f73b34fd076c7925d1",
"body": "HTTP_METHODS was added in dcaa074abf on 2007-05-26 to enumerate verbs when reporting method-not-allowed routing errors. It became unused in 588225f885 on 2009-12-11, when that fallback was removed as too much of a hack.\n\nRouting implementation details were excluded from RDoc in c10bf8205c on 2010-03-31, and the constant remains explicitly :nodoc: with no Rails callers. Remove the stale internal list.",
"is_bot": false,
"headline": "Remove unused Routing::HTTP_METHODS constant",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T20:39:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ad320f5cdeb7c3ecc4afbf8561ef02e9ab12aca",
"body": "DEFAULT_REDIS_OPTIONS was added in 9f8ec35352 on 2017-11-13 as part of the built-in Redis cache store. It became unused in 5843a7b7f2 on 2026-06-01, when the redis-client migration removed its last in-file callers.\n\nThe constant is published in the API documentation and may have external consumers, so preserve its value through a deprecation cycle rather than removing it directly. Applications can pass timeout options to RedisCacheStore or a configured RedisClient instead.",
"is_bot": false,
"headline": "Deprecate RedisCacheStore::DEFAULT_REDIS_OPTIONS",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T19:44:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d01305b3fcbbf71e615c8ec77fd9f1d98e442bc9",
"body": "…ew-depth-limit\n\nRemove unused ParamBuilder#new_depth_limit method",
"is_bot": false,
"headline": "Merge pull request #58185 from Shopify/rubydex/remove-param-builder-n…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T19:33:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "844fac584b10406591612958ffeb5231aa2bc156",
"body": "…mon-try-enter\n\nRemove unused ThreadMonitor#mon_try_enter method",
"is_bot": false,
"headline": "Merge pull request #58182 from Shopify/rubydex/remove-thread-monitor-…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T19:30:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1d60b4200d65c7ca695aeefece394d3b810e590",
"body": "…ialize-entries\n\nRemove unused Redis cache serialize_entries methods",
"is_bot": false,
"headline": "Merge pull request #58186 from Shopify/rubydex/remove-redis-cache-ser…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T19:06:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "adae4993e1d83d0e47a0a6f7fc5cb22a4744a2d2",
"body": "…quest\n\nRemove unused cross_origin_request? method",
"is_bot": false,
"headline": "Merge pull request #58184 from Shopify/rubydex/remove-cross-origin-re…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T18:58:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19a4bc26e14ac4abafd74fc4b300bf77fad8b1bb",
"body": "…ch-data\n\nRemove unused Journey::GTG::MatchData",
"is_bot": false,
"headline": "Merge pull request #58178 from Shopify/rubydex-remove-journey-gtg-mat…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T18:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f18ec0154c6987e2d72c4171debc65e46d10083",
"body": "Remove unused UriEncoder constants",
"is_bot": false,
"headline": "Merge pull request #58176 from Shopify/rubydex-remove-uri-encoder-utf8",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T18:32:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d59ed2c56171bd8bf5f226ce598ff5fda199924",
"body": "…ler-pool-managers\n\nRemove unused ConnectionHandler#pool_managers method",
"is_bot": false,
"headline": "Merge pull request #58183 from Shopify/rubydex/remove-connection-hand…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T18:28:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6a0d1a5ba8774f900dfc0b9148bdb56a52e288e",
"body": "Remove unused SAFE_FETCH_SITES constant",
"is_bot": false,
"headline": "Merge pull request #58180 from Shopify/rubydex-remove-safe-fetch-sites",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T18:24:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83e40143fd45baef81b102c8335fafb1d2eead59",
"body": "The method was copied from Rack::QueryParser when ParamBuilder was introduced in ce5f1817bc, but Rails never added Rack's caller or an equivalent depth-limit setter. It has therefore been unused since its introduction.",
"is_bot": false,
"headline": "Remove unused ParamBuilder#new_depth_limit method",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T17:52:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e15f36f95b45d25272601e3e4e395bcdc5411911",
"body": "Commit 51d4feaabc replaced ThreadLoadInterlockAwareMonitor with ThreadMonitor and carried this helper over from the old implementation. The removed LoadInterlockAwareMonitorMixin had called mon_try_enter, while ThreadMonitor#synchronize calls mon_enter directly, so the helper became unused in that commit.",
"is_bot": false,
"headline": "Remove unused ThreadMonitor#mon_try_enter method",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T17:52:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8229525f65600deb74be6d1aa85e18e5e98c9b4",
"body": "RedisCacheStore#serialize_entries was introduced in f9a8646d81 for the mapped_mset write path. Commit f9fce850da replaced that path with per-entry pipelined writes, leaving the helper without a caller.\n\nThe unused helper was later copied into DeprecatedRedisCacheStore by the rename in 79b357bd89. Remove it from both implementations.",
"is_bot": false,
"headline": "Remove unused Redis cache serialize_entries methods",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T17:52:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8cbbde490041b7f3c92601a2cb300862e2c3a72",
"body": "The method was added in f5a1915f1d as part of the fetch metadata CSRF implementation, but it was never called. The verification and warning paths perform the same checks directly.",
"is_bot": false,
"headline": "Remove unused cross_origin_request? method",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T17:52:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "939b6cc1dd261e6b960c0dad23aade2cca495eff",
"body": "The helper was added in 74cb960e66 for deprecation_for_pool_handling. Commit 64cbcd7a8c removed that deprecation path, leaving pool_managers without a caller.",
"is_bot": false,
"headline": "Remove unused ConnectionHandler#pool_managers method",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T17:52:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ef46b8cc930fdc1674c5d8ec1f6535feb61c100",
"body": "…ring",
"is_bot": false,
"headline": "Merge pull request #58175 from Shopify/rubydex-remove-empty-binary-st…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-21T17:33:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9a743a37459989aaf62c70c67cb9c0db336c86e",
"body": "UriEncoder is an internal, nodoc class, and its UTF_8 and ESCAPED constants have no remaining references.\n\nBoth constants were added by a61792574d on April 20, 2014 for UriEncoder#unescape_uri: UTF_8 selected the output encoding and ESCAPED matched encoded bytes. They became dead in dfc5e80e0f on February 13, 2025, when unescape_uri was removed in favor of CGI.unescape.",
"is_bot": false,
"headline": "Remove unused UriEncoder constants",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T15:31:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b56ea67435f80649913e82212bd27ed0c0583b61",
"body": "Journey::GTG::MatchData is an internal, nodoc class with no remaining constructor or constant references.\n\nThe class entered Action Pack in 56fee39c39 on December 19, 2012 when Journey moved under Action Dispatch. It became dead in 845aabbcd3 on May 22, 2017, when the unused Simulator#simulate method and its MatchData.new call were removed.",
"is_bot": false,
"headline": "Remove unused Journey::GTG::MatchData",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T15:09:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c5468f54f845dec922b1b20db94c78fed4975d2",
"body": "SAFE_FETCH_SITES is private and has no remaining references.\n\nIt was added by f5a1915f1d on December 12, 2025 for Sec-Fetch-Site based CSRF protection. It became dead in 4a3bf76371 on January 12, 2026, when SAFE_FETCH_SITES.include? was replaced with explicit case branches for same-origin and same-site.",
"is_bot": false,
"headline": "Remove unused SAFE_FETCH_SITES constant",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T15:09:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22fec4557fdb2e66d0e5f469c451851fd5478d06",
"body": "Rubydex reports no references to this constant, and repository-wide code search confirms that it is never read.\n\nEMPTY_BINARY_STRING was added by d51ad367e2 on February 4, 2026 as part of better cache deserialization error handling. That change did not use the constant, and no later change introduced a use, so it has been dead since it was added.",
"is_bot": false,
"headline": "Remove unused EMPTY_BINARY_STRING constant",
"author_name": "Nikita Vasilevsky",
"author_login": "nvasilevski",
"committed_at": "2026-07-21T15:09:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04aeb87acdf7559d2e82b692ec7e4e775ffc845e",
"body": "Fix `bundle install` on `ruby-dev`",
"is_bot": false,
"headline": "Merge pull request #58171 from Earlopain/bump-versions-4.1",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-21T15:06:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d189039ca37cef12e38219a94fa622415e45063",
"body": "Some deprecated APIs were removed, which these gems made use of",
"is_bot": false,
"headline": "Bump gems to install on ruby-dev",
"author_name": "Earlopain",
"author_login": "Earlopain",
"committed_at": "2026-07-21T13:25:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee7a9866854a00bc259f9e4d7e2dbc7a4d045039",
"body": "[ci-skip][doc] Fix inconsistent links in Active Job guide",
"is_bot": false,
"headline": "Merge pull request #58163 from hachi8833/fix_active_job_guide",
"author_name": "Ryuta Kamizono",
"author_login": "kamipo",
"committed_at": "2026-07-21T06:36:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ac4702080445968f7308f9877a474a446a462ab",
"body": "Let dump_schema_migrations_sort_by be :reverse by default",
"is_bot": false,
"headline": "Merge pull request #58166 from rails/fxn/change-default",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-20T16:10:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3527e4c4786285b6a77fbcfab0d691fb589bd905",
"body": null,
"is_bot": false,
"headline": "Let dump_schema_migrations_sort_by be :reverse by default",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-20T13:27:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efcce3cca4c388b4baffdcb73c0827cbcd98cad6",
"body": null,
"is_bot": false,
"headline": "[ci-skip][doc] Fix broken links",
"author_name": "hachi8833",
"author_login": "hachi8833",
"committed_at": "2026-07-20T07:41:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "160577bb9acc2f6d17e66b2d4aeb1392fcd690cf",
"body": "…doc-markup\n\nFix RDoc markup in ActiveSupport::ContinuousIntegration [ci skip]",
"is_bot": false,
"headline": "Merge pull request #58158 from Yuhi-Sato/fix-continuous-integration-r…",
"author_name": "Ryuta Kamizono",
"author_login": "kamipo",
"committed_at": "2026-07-19T11:03:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3233905d67354f31f2df386f07551242e916e18",
"body": null,
"is_bot": false,
"headline": "Fix RDoc markup in ContinuousIntegration docs [ci skip]",
"author_name": "Yuhi-Sato",
"author_login": "Yuhi-Sato",
"committed_at": "2026-07-19T06:33:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cba6112015af863cbed97f3ace86caf4e6c325e0",
"body": "Fix typos and inconsistencies in documentation [skip ci]",
"is_bot": false,
"headline": "Merge pull request #58036 from 55728/fix-product-reviews-guide-typos",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-18T22:14:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b36c967dc9a01e616027453d43104af80b06a54",
"body": "Test that config.action_dispatch.default_headers set in an initializer is applied",
"is_bot": false,
"headline": "Merge pull request #58146 from nurey/default-headers-initializer-test",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-18T20:49:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05c7d2a8c5a044f06e708372e5f8cc5f6354034b",
"body": "…-digest\n\nFix test_precompile_shouldn't_use_the_digests_present_in_manifest.json failure",
"is_bot": false,
"headline": "Merge pull request #58148 from yahonda/fix-flaky-sprockets-precompile…",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-17T23:53:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1375572d17f107e9f7f788cceffb59707cb6202",
"body": "…n failure\n\nWhen this test rewrites app/assets/images/rails.png in the same second\nas the initial write, the second precompile reuses the stale cached\ndigest and the application.css digest does not change:\n\n Expected \"application-c56ef81d122dffa8b257b0546ba1b09bd2d8b97e4aef881de8db9f760b903af6.cs\n[…]\na-e4be-4732-b980-bacd627dfc21\n* 2026-07-17 railties (3.3)\n https://buildkite.com/rails/rails/builds/131149#019f7040-9396-4972-99b7-06deec0012db\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix test_precompile_shouldn't_use_the_digests_present_in_manifest.jso…",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-17T23:29:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0f60b3fbbfd7f31a0f80e665cfcc7327afefdb31",
"body": "`config.action_dispatch.default_headers` set from a config/initializers\nfile must reach responses. This guards the timing bug where\nActionDispatch::Response is loaded during application initialization,\nbefore config/initializers run, so the load hook captures the default\nheaders before an initializer replaces them.\n\nRelated to #58145 and #32592.",
"is_bot": false,
"headline": "Test default_headers set in an initializer are applied",
"author_name": "Ilia Lobsanov",
"author_login": "nurey",
"committed_at": "2026-07-17T22:48:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "86e34d6c7bdd50a375334b6a7b25934bf5a0bbe0",
"body": "The test suite of load_schema_migrations has accumulated a number of tests for\nedge cases and error conditions, and it starts to be too noise and with\nduplicated setups.\n\nThis refactor moves it to its own class, has a specialized setup, defines a\ncouple of helpers that eliminate a lot of duplication, adds more tests, and\nswitches to use the `test` macro.",
"is_bot": false,
"headline": "Refactor the test suite of load_schema_migrations",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T21:45:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ff61eb2ff9a94c8048345a5dbf25edc02bc1718",
"body": "I used [0-9] here because in Perl \\d matches any Unicode digit.\n\nHowever, I just saw this is different in Ruby:\n\n> /\\d/: Matches a digit character: equivalent to [0-9]\n\nfrom https://docs.ruby-lang.org/en/4.0/Regexp.html.",
"is_bot": false,
"headline": "Simplify regexp character class",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T16:05:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b3e9614dc0bfc33b711dcaf5d7c1c5504c6125b",
"body": null,
"is_bot": false,
"headline": "Let schema migration loading filter and validate in one pass",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T15:51:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad846ec1f48d7d3ab8f342f65fafb2ee8b43f33",
"body": "Harden load schema migrations",
"is_bot": false,
"headline": "Merge pull request #58139 from 55728/harden-load-schema-migrations",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T15:35:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b64e3f9d4e2a79e20e2c1cc05fe85d42dc7481c2",
"body": "A version listed twice — say, from a hand-resolved merge conflict in\nthe list — made db:schema:load fail midway with an adapter-level\nActiveRecord::RecordNotUnique on a fresh database. When the version\nwas already present in schema_migrations, the duplicate was silently\ntolerated instead, because ve\n[…]\n entry means the hand-maintained list went wrong, so the\nload now fails fast with an error naming the duplicated version,\nbefore any versions are inserted. Fresh and incremental loads behave\nthe same.",
"is_bot": false,
"headline": "Raise on duplicate versions listed after __END__ in db/schema.rb",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-17T15:26:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5e1ba35886198dd4635753245eeed3a5f73d9925",
"body": "The __END__ marker was located with an exact \"__END__\\n\" byte match.\nRuby itself recognizes the marker in files with CRLF line endings, and\nin files where __END__ is the last line with no trailing newline, so\nsuch a schema file executed fine and then failed with \"No __END__\nfound\" on the very marker\n[…]\nis committed with CRLF endings and then\nloaded on another platform.\n\nThe marker is now matched with Ruby's line semantics. The version\nlines themselves were already resilient, since they are stripped.",
"is_bot": false,
"headline": "Load schema_migrations from schema files with CRLF line endings",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-17T14:14:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b46f679e7cd8709af66fb84979c65a6678ed765",
"body": "Make AbstractController::Base#action_methods ractor safe",
"is_bot": false,
"headline": "Merge pull request #58113 from Shopify/ec-action-methods-ractor",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2026-07-17T13:24:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4b4fb832dcb07315392cc7614864d67054d8f79",
"body": null,
"is_bot": false,
"headline": "Polish a bit the docs of schema_migrations dumps",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T09:22:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2d64214943b938169dc4caea8937ab5b7bca713",
"body": "Support dumping schema_migrations in db/schema.rb",
"is_bot": false,
"headline": "Merge pull request #58134 from rails/fxn/dump-schema-migrations",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T04:58:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07b31fbbef15c8cd764b9c40feab796438c1cb0e",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into fxn/dump-schema-migrations",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-17T04:48:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "802227924b70b4c8c903b7d0333238b9129a181f",
"body": "…on-proxysql\n\nDon't force multi statement for MySQL tx isolation",
"is_bot": false,
"headline": "Merge pull request #58133 from edaroit/fix-trilogy-isolated-transacti…",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2026-07-16T20:16:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3421b05ac6f932df638be4ece3c97b7c52aef8ea",
"body": "db/schema.rb has two issues:\n\n1. When loaded, it has to make an assumption about the migrations that have been\n applied. There are edge cases in which the assumption is wrong.\n\n2. The version kwarg is a source of merge conflicts when two branches have new\n migrations. Sometimes, that conflict even appears later in the merge queue!\n\nThis patch addresses these pain points.\n\nSee details in the CHANGELOG entry and docs included in this patch.",
"is_bot": false,
"headline": "Support dumping schema_migrations in db/schema.rb",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-16T20:10:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eab898bbe56699adb5b6065639a1108853602828",
"body": "Previously, the abstract MySQL adapter's `begin_isolated_db_transaction`\nwas [refactored][1] to use multi statements to ensure that `SET\nTRANSACTION ISOLATION LEVEL` and `BEGIN` would be retried as a unit.\nThis prevented a potential bug where a `BEGIN` could be retried and lose\na previously configur\n[…]\n`execute_batch`\nwhen multi statement enabled.\n\n[1]: 4908dc305fa48142449224581377f8450313ef40\n\nCo-authored-by: Hartley McGuire <skipkayhil@gmail.com>\nCo-authored-by: Matthew Draper <matthew@trebex.net>",
"is_bot": false,
"headline": "Don't force multi statement for MySQL tx isolation",
"author_name": "Eliseu Daroit",
"author_login": "edaroit",
"committed_at": "2026-07-16T19:35:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "19e0d37fc77cc2c66b3f859ee277937cbfb65a32",
"body": "Wishlists guide:\n- An unmatched parenthesis after the Getting Started Guide link.\n\nProduct Reviews guide:\n- The db:migrate sample output omitted the default: 0 option that the\n migration above it declares (the sibling reviews_count line shows it).\n- \"We need to a way to view\" -> \"We need a way to v\n[…]\ncklash\" ->\n\"backslash\", \"Oauth\" -> \"OAuth\", \"Illiad\" -> \"Iliad\", \"derivated\" ->\n\"derived\", \"striped\" -> \"stripped\"). These were surfaced with codespell\nand proofreading; CHANGELOGs are left untouched.",
"is_bot": false,
"headline": "Fix typos and inconsistencies in documentation [ci skip]",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-16T13:06:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e60f5e73d78fb4932e8d6da087e68f598661faa",
"body": "- ### Problem\n\n `action_methods` returns a Set containing all methods that should be\n considered as action. This set isn't frozen, so any time it is\n referenced in a ractor, a Ractor Isolation error is raised.\n\n ### Solution\n\n Simply freeze the Set. We discussed about the possibility that this\n change could break existing application that overrides\n `action_methods` (like Action Mailer do) but decided it's unlikely.",
"is_bot": false,
"headline": "Make AbstractController::Base#action_methods ractor safe:",
"author_name": "Edouard CHIN",
"author_login": "Edouard-chin",
"committed_at": "2026-07-16T12:58:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f011d1218bdd77857f30ce3964eef186f0f14de5",
"body": "…rt-circuits\n\nAdd async test coverage for contradiction/none short-circuits in calculations",
"is_bot": false,
"headline": "Merge pull request #58115 from 55728/add-async-tests-calculations-sho…",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2026-07-16T07:24:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93c356947296e4d4ece9629cdbb7b133e89e7999",
"body": "…recision\n\nPreserve sub-second precision when coercing a `DateTime` in `Time.at`",
"is_bot": false,
"headline": "Merge pull request #58085 from 55728/fix-time-at-datetime-subsecond-p…",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2026-07-16T07:23:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd3f974d6567ab0bedcbd446be5b9f2811de2713",
"body": "Allow to access `Controller#controller_path` in a Ractor",
"is_bot": false,
"headline": "Merge pull request #58119 from Shopify/ec-controller-path-freeze",
"author_name": "Jean Boussier",
"author_login": "byroot",
"committed_at": "2026-07-16T07:16:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bd4bd8ea5323cd82b7ca8da7cf9f140d5af9daa",
"body": "Don't autovivify the PostgreSQL listener on shutdown",
"is_bot": false,
"headline": "Merge pull request #57702 from 55728/fix-pg-shutdown-autovivify-listener",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T22:57:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8e2d6564032322163b45f723718081bdf6b3cda",
"body": "Add missing ActiveSupport core extension and feature requires",
"is_bot": false,
"headline": "Merge pull request #58042 from 55728/fix-parameters-fetch-values-require",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T22:54:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "596ba03153a5120e12f9fa6b658471bb8d9d5c66",
"body": "PostgreSQL#shutdown called the memoizing private `listener` accessor,\nwhich lazily builds a Listener — spawning a background thread and opening\na database connection — purely to tear it down. Shutting down an adapter\nthat was never subscribed to (a broadcast-only or idle worker) therefore\ncreated a thread and a throwaway connection for nothing.\n\nGuard on the raw ivar like the Redis adapter's `shutdown` already does,\nso an unused adapter shuts down as a no-op.",
"is_bot": false,
"headline": "Don't autovivify the PostgreSQL listener on shutdown",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-15T22:50:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75fef8331d19358af6d8889152389d095d3a2ae3",
"body": "Fix `rubocop.yml` indentation",
"is_bot": false,
"headline": "Merge pull request #58132 from jeromedalbert/fix-yml-indent",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T22:46:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9eaae758d931c2c8b9031d7dcd33a7929faecd2",
"body": "Fix Rubocop violation in `config/puma.rb` - Approach 1",
"is_bot": false,
"headline": "Merge pull request #58129 from jeromedalbert/fix-config-puma-1",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T22:12:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd5c84cd08eb63762601d2b3b2a6bf9a330cc023",
"body": null,
"is_bot": false,
"headline": "Fix `rubocop.yml` indentation",
"author_name": "Jerome Dalbert",
"author_login": "jeromedalbert",
"committed_at": "2026-07-15T19:25:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cfb10cb6ec1434c8e8cb8635bb20baa472e43af5",
"body": "…on-limit\n\nRespect a limit set on the relation in `rails query`",
"is_bot": false,
"headline": "Merge pull request #58043 from 55728/fix-query-command-respect-relati…",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-15T17:21:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9120ec05aaef0b0c5d1e999e4835ccbde8952f53",
"body": "…ument-default\n\nTest that `reverse_merge` takes the default from the other hash",
"is_bot": false,
"headline": "Merge pull request #58063 from 55728/test-reverse-merge-preserves-arg…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T17:11:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d718384dc0d65436c5eecf141ce653bb93e27b7a",
"body": null,
"is_bot": false,
"headline": "Fix Rubocop violation in config/puma.rb",
"author_name": "Jerome Dalbert",
"author_login": "jeromedalbert",
"committed_at": "2026-07-15T14:53:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a321e18c1786da8ea95e134761fc884b0e269ed1",
"body": "This PR is part of the Rails Foundation documentation project and updates the Rails Generators guide.\n\nNote: Section \"Applications Templates\" and \"Rails Generator API\" do not require a review. They have already gone through the full review process already as they came from merging another guide into this guide.\n\nCo-authored-by: Ayush Newatia <ayush@hey.com>\nCo-authored-by: Petrik de Heus <petrik@deheus.net>",
"is_bot": false,
"headline": "[RF-Docs] [ci-skip] Update the Rails Generators guide (#57371)",
"author_name": "bhumi1102",
"author_login": "bhumi1102",
"committed_at": "2026-07-15T13:10:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bee8deefc726adb80d8ff69d602b2e35c230e1b2",
"body": "Fix `Relation#one?` doc example calling `any?`",
"is_bot": false,
"headline": "Merge pull request #58124 from 55728/fix-relation-one-doc-example",
"author_name": "Ryuta Kamizono",
"author_login": "kamipo",
"committed_at": "2026-07-15T12:05:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d34c473f51dbe9bf67ab65303616307525b660f",
"body": "The second example under `Relation#one?` called `posts.any?(Comment)`.\nUse `one?` so the example demonstrates the documented method, align the\nresult comments like the `any?` examples, and fix \"one records\" in both\nmethods' prose.",
"is_bot": false,
"headline": "Fix `Relation#one?` doc example calling `any?` [ci skip]",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-15T11:53:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cfea92cd88640d0022b8b9f67820be7e2bfe469",
"body": "Guard tests for PostgreSQL 11, 12, and 15 changes",
"is_bot": false,
"headline": "Merge pull request #58116 from yahonda/postgresql-version-test-guards",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-15T09:32:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2dbb2104247e1ea5e9832d256c26c798156df20",
"body": null,
"is_bot": false,
"headline": "Merge pull request #55410 from seanpdoyle/action-view-navigation-helper",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-15T01:50:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07f4b45e294e016675ec500a800f359cde839aa4",
"body": "Related to [#50312][]\n\nCreate the `ActionView::Helper::NavigationHelper` to serve as a module\nfor `button_to` and `link_to` (as well as related\n`link_to_unless_current`, `link_to_unless`, and `link_to_if`).\n\nAs a side-effect of moving those methods, this commit also moves several\n`private`-scoped me\n[…]\n\nignored. Depsite that fact, this commit moves the methods so that they\nare defined in the same module that they are called.\n\n[#50312]: https://github.com/rails/rails/pull/50312#discussion_r2220564548",
"is_bot": false,
"headline": "Introduce `ActionView::Helpers::NavigationHelper`",
"author_name": "Sean Doyle",
"author_login": "seanpdoyle",
"committed_at": "2026-07-14T22:57:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0facc5c8fbb4357de1a32d3e4244165c8c0cdf59",
"body": "- ### Problem\n\n The string returned by `SomeController#controller_path` isn't frozen\n so we can't access it from a ractor.\n\n ### Solution\n\n Freeze the returned string.\n\n ### Side note\n\n The memoization works correctly in a Ractor because the writer is\n set thanks to an existing `inherited` hook.",
"is_bot": false,
"headline": "Allow to access `Controller#controller_path` in a Ractor:",
"author_name": "Edouard CHIN",
"author_login": "Edouard-chin",
"committed_at": "2026-07-14T17:43:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b62a092e3f8a0f24ac9aa5fbb183cdee763c22f4",
"body": null,
"is_bot": false,
"headline": "Update my last name in changelogs",
"author_name": "eileencodes",
"author_login": "eileencodes",
"committed_at": "2026-07-14T14:59:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97748791052e12d241e912864881f850839c12ac",
"body": "…ted_to_all_shards\n\nRaise for empty shards on `connected_to_all_shards`",
"is_bot": false,
"headline": "Merge pull request #58117 from rails/raise-for-empty-shards-on-connec…",
"author_name": "Eileen",
"author_login": "eileencodes",
"committed_at": "2026-07-14T14:58:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "697fc4c0b94da6d4e6e82fd70a8ccc31bc7ff027",
"body": "If an app isn't sharded then `connected_to_all_shards` should raise an\nerror because `shard_keys` will be empty. While the issue argued that it\nshould work by using default, the app isn't actually sharded. For an app\nto be sharded there at minimum needs to be 2 connection configs with\ndifferent schemas because 1 is the router and 1 is a shard which\nrepresents a 1x partition of a database.\n\nCloses: https://github.com/rails/rails/issues/58114",
"is_bot": false,
"headline": "Raise for empty shards on `connected_to_all_shards`",
"author_name": "eileencodes",
"author_login": "eileencodes",
"committed_at": "2026-07-14T14:35:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db0a479f12dc3c579c67f397edc4f69d12d644cb",
"body": "…ulations\n\nFollow-up to https://github.com/rails/rails/pull/58058#pullrequestreview-4687080638\n\nThe contradiction and null-relation short-circuits in the calculation\nmethods return early without hitting the database, but most of them\nwere only tested through the synchronous entry points. Cover the\nasync variants as well, asserting that they return a promise with the\nsame result and still issue no queries.",
"is_bot": false,
"headline": "Add async test coverage for contradiction/none short-circuits in calc…",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-14T13:12:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16d141ab543f0d3aaf57ee95157a4e156288911d",
"body": "PostgreSQL 10 does not accept EXECUTE FUNCTION in CREATE TRIGGER, so\nthe test schema fails to load. Switch to EXECUTE PROCEDURE, which\nworks on every supported version and is already used in this file.\n\nPostgreSQL 11 also added arrays of domain types and primary/foreign\nkey constraints on partitione\n[…]\nes/postgres/commit/eb7ed3f3063401496e4aa4bd68fa33f0be31a72f\nhttps://github.com/postgres/postgres/commit/3de241dba86f3dd000434f70aebba725fb928032\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Guard tests for PostgreSQL 11 changes",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-14T13:06:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "439ca10f3fd497eb1f74fc8a5ae640eb3aac19fd",
"body": "PostgreSQL 12 added generated columns. The test schema creates the\nvirtual_stored_number column only when supports_virtual_columns? is\ntrue, so guard the two tests reading it with the same predicate.\n\nPostgreSQL 12 also allowed ALTER TYPE ... ADD VALUE inside a\ntransaction block. No supports_*? pred\n[…]\nted value is not referenced\n> until after it is committed.\n\nhttps://github.com/postgres/postgres/commit/212fab9926b2f0f04b0187568e7124b70e8deee5\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Guard tests for PostgreSQL 12 changes",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-14T13:02:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "349e1ccb43eb2366395da137ed08b5fddbd20f47",
"body": "PostgreSQL 15 added UNIQUE NULLS NOT DISTINCT. Older servers create\nthe constraint without the option and the schema dump omits the flag,\nso branch the assertion on supports_nulls_not_distinct?, following\ntest_schema_dumps_nulls_not_distinct in the same file.\n\nhttps://www.postgresql.org/docs/release\n[…]\nconstraints and indexes using\n> UNIQUE NULLS NOT DISTINCT.\n\nhttps://github.com/postgres/postgres/commit/94aa7cc5f707712f592885995a28e018c7c80488\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Guard tests for PostgreSQL 15 changes",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-14T13:02:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f956777962d286cc5c9aa8a3ae25ee7eaadaf43a",
"body": "…nforced-toggle-v2\n\nUse NOT ENFORCED toggle in check_all_foreign_keys_valid! on PostgreSQL 18.4+",
"is_bot": false,
"headline": "Merge pull request #58055 from yahonda/check-all-foreign-keys-valid-e…",
"author_name": "Yasuo Honda",
"author_login": "yahonda",
"committed_at": "2026-07-14T10:42:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49c044bf2213c100f39399d47de4e6476005b64c",
"body": null,
"is_bot": false,
"headline": "Fix the broken #with reference",
"author_name": "Niklas Haeusele",
"author_login": "codergeek121",
"committed_at": "2026-07-13T20:47:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddf2e01505e13f4243ce6d72ae2b829279c953b1",
"body": null,
"is_bot": false,
"headline": "Remove unneeded parenthesis [ci-skip]",
"author_name": "claudiob",
"author_login": "claudiob",
"committed_at": "2026-07-13T20:42:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4aafd831a6e4c2979e43a4069f1415860d6ffc1e",
"body": "The guides currently mention the ActionView guides before the\nActionController guides. This makes sense if the order is MVC.\n\nHowever, some of the ActionView guides require knowledge of controllers\nand routes, whereas most of the ActionController guides can be read\nwithout knowledge of ActionView. S\n[…]\n order: route -> controller\n-> view -> response.\n\nThis moves \"Controllers\" before \"Views\", renames \"Controllers\" to\n\"Routing and Controllers\", and moves the routing guide above the\ncontrollers guides.",
"is_bot": false,
"headline": "Change the order of Views and Controllers in the guides",
"author_name": "Petrik",
"author_login": "p8",
"committed_at": "2026-07-13T13:02:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f08380b65f3fa0d7cd6299ff46960dca7a4cb754",
"body": "Copying an example should not output the plain ellipsis.\nThis is problematic in Ruby where `...` is valid Ruby, while in other\nlanguages it will generate syntax errors.\n\nFor output of Rails commands we can still use regular ellipsis as\ncopying that output won't work anyway.\n\nThis also updates the guides guidelines with an example.",
"is_bot": false,
"headline": "Comment ellipsis in guides examples",
"author_name": "Petrik",
"author_login": "p8",
"committed_at": "2026-07-13T13:01:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca0627edfbbb11b2836be411ae88a913e051c784",
"body": "The guide checks for the absence of \"Store Settings\" using\r\n`assert_not_dom \"a\", \"Store Settings\"`.\r\n\r\nHowever, \"Store Settings\" is rendered as an `h4` heading rather\r\nthan a link, so the selector should be `h4` to match the markup\r\nshown in the guide.",
"is_bot": false,
"headline": "Fix settings navigation test in authentication guide",
"author_name": "Lemayian JN",
"author_login": "Lemmah",
"committed_at": "2026-07-13T08:53:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9e0c77e6609c895de2c97924ed09c7d6fad6798",
"body": "…che-control-case\n\nDowncase Cache-Control key in asset pipeline guide example",
"is_bot": false,
"headline": "Merge pull request #58101 from meganemura/fix-asset-pipeline-guide-ca…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-13T04:19:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bebc20b72971b8913d60f6b7e6e7cf3b64eb71c0",
"body": "#52653 downcased the cache-control header key in the generated\ndevelopment.rb.tt and test.rb.tt templates so newly generated apps\nfollow the Rack 3 SPEC, which requires response headers to be\nlowercase. The asset pipeline guide's CDN section still showed the\nconfig.public_file_server.headers example with the old\n\"Cache-Control\" casing, so update it to match the generated code.",
"is_bot": false,
"headline": "Downcase Cache-Control key in asset pipeline guide example",
"author_name": "meganemura",
"author_login": "meganemura",
"committed_at": "2026-07-13T03:44:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7150bfc0109b33165cec73f24b1cdf17b252566",
"body": "…-form\n\nCarry the `form` attribute onto a multiple `select`'s hidden field",
"is_bot": false,
"headline": "Merge pull request #58064 from 55728/fix-select-multiple-hidden-field…",
"author_name": "Hartley McGuire",
"author_login": "skipkayhil",
"committed_at": "2026-07-12T21:33:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "520e5c6e7461d2d8b81552601f794d7c79597bea",
"body": "Read foreign key names from the schema on SQLite3",
"is_bot": false,
"headline": "Merge pull request #58096 from 55728/fix-sqlite3-foreign-key-name",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-12T19:44:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f1564b152862bb288a88c809c2cf309e8682a46",
"body": "On SQLite3, `foreign_keys` did not read the constraint name from the\ntable definition, so every `ForeignKeyDefinition` came back with\n`name == nil`. Several user-visible bugs followed:\n\n- `remove_foreign_key(table, name: \"fk\")` ignored the name and removed\n an arbitrary (the first) foreign key inst\n[…]\nith the\nabstract adapter and MySQL/PostgreSQL. Custom names now survive table\nrebuilds and round-trip through the schema dump; auto-generated\n`fk_rails_*` names remain ignored by the dumper as before.",
"is_bot": false,
"headline": "Read foreign key names from the schema on SQLite3",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-12T19:33:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2bd3cd4b2fb57f9af43daa789902d86554527bb9",
"body": "Refactor assume_migrated_upto_version",
"is_bot": false,
"headline": "Merge pull request #58099 from rails/fxn/refactor",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-12T18:45:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6039e0e827bfaf6f5c20bbddaa1ce5204d4dc78d",
"body": null,
"is_bot": false,
"headline": "Refactor assume_migrated_upto_version",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-12T18:19:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3947087c3678656c8885633c5f0dea0a4fab782b",
"body": "…trip\n\nStrip only the commented line when detecting a LIMIT in `rails query`",
"is_bot": false,
"headline": "Merge pull request #58077 from 55728/fix-query-command-line-comment-s…",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-12T13:22:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09e9417652bd76942003f2f0b10dd48fcc2d93fa",
"body": "`rails query --sql` decides whether to append its own `LIMIT` by first\nremoving comments from the SQL. The line-comment pattern was `--.*$` with\nthe `/m` flag (added for block comments), so `.` matched newlines and a\nsingle `--` comment consumed the rest of the statement, hiding a real\n`LIMIT` that followed it. The command then appended a second `LIMIT`,\nproducing invalid SQL. The line-comment pattern now stops at the newline.",
"is_bot": false,
"headline": "Strip only the commented line when detecting a LIMIT in rails query",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-12T13:14:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "109b3c4c58fb1514718e1190810e3971153596e7",
"body": "…ime-inputs\n\nAccept `Date` and numeric inputs in `relative_time_in_words`",
"is_bot": false,
"headline": "Merge pull request #58092 from 55728/fix-relative-time-in-words-non-t…",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-12T12:10:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0955ca345dc18315668a0647f254ccc8f95e976",
"body": "Passing a Date or a Numeric raised ArgumentError instead of returning a\ndistance string, unlike distance_of_time_in_words which accepts them.",
"is_bot": false,
"headline": "Accept Date and numeric inputs in relative_time_in_words",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-12T12:02:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d30eb2413cc0f785a7be21775e495b7ab1f58c90",
"body": "…-if-not-exists\n\nHonor `if_not_exists:` in SQLite3 `add_check_constraint` and `add_foreign_key`",
"is_bot": false,
"headline": "Merge pull request #58091 from 55728/fix-sqlite3-add-check-constraint…",
"author_name": "fatkodima",
"author_login": "fatkodima",
"committed_at": "2026-07-12T11:53:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1a33e9d2a78f077e4af1069d3ab555a7a03e066",
"body": "add_check_constraint and add_foreign_key accept if_not_exists: true to make\nadding a constraint or foreign key that already exists a no-op instead of an\nerror. The abstract adapter (used by MySQL and Trilogy) and the SQLite3\nremove_check_constraint and remove_foreign_key overrides all honor their\nex\n[…]\n:, so the option fell into **options\nunused and a duplicate was added.\n\nThey now return early when the constraint or foreign key already exists,\nmatching the abstract adapter and the remove overrides.",
"is_bot": false,
"headline": "Honor if_not_exists in SQLite3 add_check_constraint and add_foreign_key",
"author_name": "Kenta Ishizaki",
"author_login": "55728",
"committed_at": "2026-07-12T10:17:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "450c547ef823bbe948afbccd58fd887c349b48e3",
"body": "Decouple schema loading from the versions formatter",
"is_bot": false,
"headline": "Merge pull request #58093 from rails/fxn/ruby-schema-load",
"author_name": "Xavier Noria",
"author_login": "fxn",
"committed_at": "2026-07-12T09:42:37Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 3266,
"latest_release_at": "2026-03-24T20:26:02Z",
"latest_release_tag": "v8.1.3",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 52,
"days_since_latest_release": 119,
"mean_days_between_releases": 16.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "rails",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/rails",
"is_deprecated": false,
"latest_version": "8.1.3",
"repository_url": "https://github.com/rails/rails/tree/v8.1.3",
"versions_count": 516,
"total_downloads": 766141815,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T18:01:56Z",
"latest_published_at": "2026-03-24T20:27:42.098000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "@rails/actiontext",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@rails/actiontext",
"is_deprecated": false,
"latest_version": "8.1.300",
"repository_url": "https://github.com/rails/rails",
"versions_count": 151,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 8,
"monthly_downloads": 1611030,
"first_published_at": "2019-01-10T15:27:54.243000Z",
"latest_published_at": "2026-03-24T20:27:36.704000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "@rails/actioncable",
"exists": true,
"license": "MIT",
"keywords": [
"websockets",
"actioncable",
"rails"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@rails/actioncable",
"is_deprecated": false,
"latest_version": "8.1.300",
"repository_url": "https://github.com/rails/rails",
"versions_count": 151,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 8,
"monthly_downloads": 7107601,
"first_published_at": "2019-01-10T15:31:50.177000Z",
"latest_published_at": "2026-03-24T20:27:20.911000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "railties",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/railties",
"is_deprecated": false,
"latest_version": "8.1.3",
"repository_url": "https://github.com/rails/rails/tree/v8.1.3/railties",
"versions_count": 452,
"total_downloads": 763536375,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2010-02-05T03:02:06.511000Z",
"latest_published_at": "2026-03-24T20:27:39.394000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "@rails/activestorage",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@rails/activestorage",
"is_deprecated": false,
"latest_version": "8.1.300",
"repository_url": "https://github.com/rails/rails",
"versions_count": 151,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 8,
"monthly_downloads": 3915592,
"first_published_at": "2019-01-10T15:34:04.565000Z",
"latest_published_at": "2026-03-24T20:27:26.803000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "activejob",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/activejob",
"is_deprecated": false,
"latest_version": "8.1.3",
"repository_url": "https://github.com/rails/rails/tree/v8.1.3/activejob",
"versions_count": 266,
"total_downloads": 682910108,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2014-05-20T18:10:32.961000Z",
"latest_published_at": "2026-03-24T20:27:09.681000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "actionpack",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/actionpack",
"is_deprecated": false,
"latest_version": "8.1.3",
"repository_url": "https://github.com/rails/rails/tree/v8.1.3/actionpack",
"versions_count": 515,
"total_downloads": 801507633,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2009-07-25T18:36:20Z",
"latest_published_at": "2026-03-24T20:27:06.634000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
},
{
"name": "actiontext",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/actiontext",
"is_deprecated": false,
"latest_version": "8.1.3",
"repository_url": "https://github.com/rails/rails/tree/v8.1.3/actiontext",
"versions_count": 150,
"total_downloads": 424155745,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2019-01-18T21:23:18.544000Z",
"latest_published_at": "2026-03-24T20:27:32.815000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 119
}
]
},
"popularity": {
"forks": 22363,
"stars": 58641,
"watchers": 2334,
"fork_history": {
"days": [
{
"date": "2025-06-14",
"count": 2
},
{
"date": "2025-06-15",
"count": 1
},
{
"date": "2025-06-16",
"count": 1
},
{
"date": "2025-06-17",
"count": 3
},
{
"date": "2025-06-20",
"count": 1
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-06-23",
"count": 2
},
{
"date": "2025-06-24",
"count": 1
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-06-27",
"count": 1
},
{
"date": "2025-06-29",
"count": 1
},
{
"date": "2025-07-01",
"count": 3
},
{
"date": "2025-07-02",
"count": 2
},
{
"date": "2025-07-03",
"count": 3
},
{
"date": "2025-07-05",
"count": 1
},
{
"date": "2025-07-06",
"count": 2
},
{
"date": "2025-07-07",
"count": 2
},
{
"date": "2025-07-08",
"count": 2
},
{
"date": "2025-07-09",
"count": 3
},
{
"date": "2025-07-10",
"count": 4
},
{
"date": "2025-07-11",
"count": 2
},
{
"date": "2025-07-12",
"count": 1
},
{
"date": "2025-07-14",
"count": 3
},
{
"date": "2025-07-15",
"count": 3
},
{
"date": "2025-07-16",
"count": 2
},
{
"date": "2025-07-17",
"count": 5
},
{
"date": "2025-07-18",
"count": 6
},
{
"date": "2025-07-19",
"count": 2
},
{
"date": "2025-07-20",
"count": 2
},
{
"date": "2025-07-21",
"count": 5
},
{
"date": "2025-07-22",
"count": 3
},
{
"date": "2025-07-23",
"count": 2
},
{
"date": "2025-07-24",
"count": 2
},
{
"date": "2025-07-25",
"count": 1
},
{
"date": "2025-07-26",
"count": 5
},
{
"date": "2025-07-27",
"count": 1
},
{
"date": "2025-07-28",
"count": 1
},
{
"date": "2025-07-29",
"count": 2
},
{
"date": "2025-07-30",
"count": 1
},
{
"date": "2025-07-31",
"count": 2
},
{
"date": "2025-08-01",
"count": 1
},
{
"date": "2025-08-02",
"count": 1
},
{
"date": "2025-08-03",
"count": 4
},
{
"date": "2025-08-04",
"count": 1
},
{
"date": "2025-08-05",
"count": 3
},
{
"date": "2025-08-06",
"count": 1
},
{
"date": "2025-08-07",
"count": 1
},
{
"date": "2025-08-08",
"count": 4
},
{
"date": "2025-08-09",
"count": 2
},
{
"date": "2025-08-12",
"count": 2
},
{
"date": "2025-08-13",
"count": 2
},
{
"date": "2025-08-14",
"count": 4
},
{
"date": "2025-08-17",
"count": 3
},
{
"date": "2025-08-18",
"count": 3
},
{
"date": "2025-08-19",
"count": 3
},
{
"date": "2025-08-20",
"count": 3
},
{
"date": "2025-08-21",
"count": 2
},
{
"date": "2025-08-22",
"count": 1
},
{
"date": "2025-08-23",
"count": 4
},
{
"date": "2025-08-25",
"count": 4
},
{
"date": "2025-08-26",
"count": 3
},
{
"date": "2025-08-27",
"count": 2
},
{
"date": "2025-08-28",
"count": 3
},
{
"date": "2025-08-30",
"count": 2
},
{
"date": "2025-09-01",
"count": 2
},
{
"date": "2025-09-02",
"count": 1
},
{
"date": "2025-09-03",
"count": 1
},
{
"date": "2025-09-04",
"count": 5
},
{
"date": "2025-09-05",
"count": 5
},
{
"date": "2025-09-06",
"count": 4
},
{
"date": "2025-09-07",
"count": 2
},
{
"date": "2025-09-08",
"count": 1
},
{
"date": "2025-09-09",
"count": 4
},
{
"date": "2025-09-10",
"count": 1
},
{
"date": "2025-09-12",
"count": 2
},
{
"date": "2025-09-14",
"count": 1
},
{
"date": "2025-09-15",
"count": 4
},
{
"date": "2025-09-16",
"count": 1
},
{
"date": "2025-09-17",
"count": 2
},
{
"date": "2025-09-18",
"count": 1
},
{
"date": "2025-09-19",
"count": 1
},
{
"date": "2025-09-20",
"count": 2
},
{
"date": "2025-09-21",
"count": 3
},
{
"date": "2025-09-22",
"count": 3
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-09-24",
"count": 4
},
{
"date": "2025-09-25",
"count": 9
},
{
"date": "2025-09-26",
"count": 2
},
{
"date": "2025-09-27",
"count": 3
},
{
"date": "2025-09-29",
"count": 4
},
{
"date": "2025-10-01",
"count": 1
},
{
"date": "2025-10-02",
"count": 2
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-10-04",
"count": 2
},
{
"date": "2025-10-05",
"count": 2
},
{
"date": "2025-10-06",
"count": 1
},
{
"date": "2025-10-07",
"count": 2
},
{
"date": "2025-10-08",
"count": 3
},
{
"date": "2025-10-10",
"count": 2
},
{
"date": "2025-10-15",
"count": 3
},
{
"date": "2025-10-16",
"count": 2
},
{
"date": "2025-10-17",
"count": 4
},
{
"date": "2025-10-18",
"count": 5
},
{
"date": "2025-10-19",
"count": 1
},
{
"date": "2025-10-20",
"count": 2
},
{
"date": "2025-10-21",
"count": 2
},
{
"date": "2025-10-22",
"count": 3
},
{
"date": "2025-10-23",
"count": 5
},
{
"date": "2025-10-24",
"count": 4
},
{
"date": "2025-10-26",
"count": 1
},
{
"date": "2025-10-28",
"count": 1
},
{
"date": "2025-10-29",
"count": 2
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-10-31",
"count": 2
},
{
"date": "2025-11-01",
"count": 4
},
{
"date": "2025-11-02",
"count": 3
},
{
"date": "2025-11-03",
"count": 4
},
{
"date": "2025-11-05",
"count": 3
},
{
"date": "2025-11-06",
"count": 1
},
{
"date": "2025-11-07",
"count": 2
},
{
"date": "2025-11-08",
"count": 2
},
{
"date": "2025-11-09",
"count": 2
},
{
"date": "2025-11-10",
"count": 1
},
{
"date": "2025-11-11",
"count": 4
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-13",
"count": 3
},
{
"date": "2025-11-14",
"count": 2
},
{
"date": "2025-11-15",
"count": 4
},
{
"date": "2025-11-16",
"count": 3
},
{
"date": "2025-11-17",
"count": 3
},
{
"date": "2025-11-18",
"count": 4
},
{
"date": "2025-11-20",
"count": 2
},
{
"date": "2025-11-21",
"count": 3
},
{
"date": "2025-11-22",
"count": 1
},
{
"date": "2025-11-23",
"count": 2
},
{
"date": "2025-11-24",
"count": 2
},
{
"date": "2025-11-25",
"count": 1
},
{
"date": "2025-11-26",
"count": 1
},
{
"date": "2025-11-27",
"count": 2
},
{
"date": "2025-11-28",
"count": 1
},
{
"date": "2025-11-29",
"count": 4
},
{
"date": "2025-11-30",
"count": 3
},
{
"date": "2025-12-02",
"count": 2
},
{
"date": "2025-12-03",
"count": 2
},
{
"date": "2025-12-04",
"count": 2
},
{
"date": "2025-12-05",
"count": 2
},
{
"date": "2025-12-06",
"count": 1
},
{
"date": "2025-12-07",
"count": 2
},
{
"date": "2025-12-08",
"count": 1
},
{
"date": "2025-12-11",
"count": 3
},
{
"date": "2025-12-13",
"count": 2
},
{
"date": "2025-12-15",
"count": 3
},
{
"date": "2025-12-16",
"count": 3
},
{
"date": "2025-12-17",
"count": 1
},
{
"date": "2025-12-18",
"count": 3
},
{
"date": "2025-12-19",
"count": 3
},
{
"date": "2025-12-20",
"count": 3
},
{
"date": "2025-12-21",
"count": 2
},
{
"date": "2025-12-22",
"count": 2
},
{
"date": "2025-12-23",
"count": 3
},
{
"date": "2025-12-24",
"count": 2
},
{
"date": "2025-12-25",
"count": 2
},
{
"date": "2025-12-26",
"count": 2
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-29",
"count": 3
},
{
"date": "2025-12-31",
"count": 3
},
{
"date": "2026-01-01",
"count": 2
},
{
"date": "2026-01-02",
"count": 2
},
{
"date": "2026-01-05",
"count": 2
},
{
"date": "2026-01-06",
"count": 2
},
{
"date": "2026-01-07",
"count": 2
},
{
"date": "2026-01-08",
"count": 4
},
{
"date": "2026-01-09",
"count": 2
},
{
"date": "2026-01-10",
"count": 2
},
{
"date": "2026-01-11",
"count": 2
},
{
"date": "2026-01-12",
"count": 7
},
{
"date": "2026-01-13",
"count": 6
},
{
"date": "2026-01-14",
"count": 4
},
{
"date": "2026-01-15",
"count": 1
},
{
"date": "2026-01-16",
"count": 3
},
{
"date": "2026-01-18",
"count": 1
},
{
"date": "2026-01-20",
"count": 4
},
{
"date": "2026-01-21",
"count": 1
},
{
"date": "2026-01-22",
"count": 2
},
{
"date": "2026-01-23",
"count": 3
},
{
"date": "2026-01-25",
"count": 2
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-01-27",
"count": 2
},
{
"date": "2026-01-30",
"count": 3
},
{
"date": "2026-01-31",
"count": 3
},
{
"date": "2026-02-01",
"count": 1
},
{
"date": "2026-02-02",
"count": 6
},
{
"date": "2026-02-03",
"count": 2
},
{
"date": "2026-02-04",
"count": 2
},
{
"date": "2026-02-05",
"count": 4
},
{
"date": "2026-02-06",
"count": 3
},
{
"date": "2026-02-07",
"count": 3
},
{
"date": "2026-02-08",
"count": 2
},
{
"date": "2026-02-09",
"count": 1
},
{
"date": "2026-02-10",
"count": 2
},
{
"date": "2026-02-11",
"count": 1
},
{
"date": "2026-02-12",
"count": 2
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-15",
"count": 3
},
{
"date": "2026-02-16",
"count": 1
},
{
"date": "2026-02-17",
"count": 2
},
{
"date": "2026-02-18",
"count": 3
},
{
"date": "2026-02-19",
"count": 3
},
{
"date": "2026-02-20",
"count": 2
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-02-24",
"count": 3
},
{
"date": "2026-02-25",
"count": 2
},
{
"date": "2026-02-26",
"count": 5
},
{
"date": "2026-02-28",
"count": 1
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-05",
"count": 1
},
{
"date": "2026-03-06",
"count": 2
},
{
"date": "2026-03-07",
"count": 2
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-09",
"count": 1
},
{
"date": "2026-03-10",
"count": 2
},
{
"date": "2026-03-11",
"count": 6
},
{
"date": "2026-03-12",
"count": 4
},
{
"date": "2026-03-13",
"count": 1
},
{
"date": "2026-03-14",
"count": 1
},
{
"date": "2026-03-15",
"count": 2
},
{
"date": "2026-03-16",
"count": 2
},
{
"date": "2026-03-17",
"count": 4
},
{
"date": "2026-03-18",
"count": 1
},
{
"date": "2026-03-19",
"count": 3
},
{
"date": "2026-03-21",
"count": 3
},
{
"date": "2026-03-22",
"count": 2
},
{
"date": "2026-03-23",
"count": 2
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-03-25",
"count": 5
},
{
"date": "2026-03-26",
"count": 3
},
{
"date": "2026-03-27",
"count": 2
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-03-31",
"count": 3
},
{
"date": "2026-04-01",
"count": 2
},
{
"date": "2026-04-02",
"count": 2
},
{
"date": "2026-04-03",
"count": 3
},
{
"date": "2026-04-04",
"count": 4
},
{
"date": "2026-04-06",
"count": 1
},
{
"date": "2026-04-07",
"count": 4
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-09",
"count": 1
},
{
"date": "2026-04-11",
"count": 3
},
{
"date": "2026-04-13",
"count": 4
},
{
"date": "2026-04-14",
"count": 1
},
{
"date": "2026-04-15",
"count": 1
},
{
"date": "2026-04-16",
"count": 2
},
{
"date": "2026-04-17",
"count": 2
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-19",
"count": 3
},
{
"date": "2026-04-22",
"count": 3
},
{
"date": "2026-04-23",
"count": 4
},
{
"date": "2026-04-24",
"count": 3
},
{
"date": "2026-04-25",
"count": 4
},
{
"date": "2026-04-27",
"count": 5
},
{
"date": "2026-04-28",
"count": 1
},
{
"date": "2026-04-29",
"count": 4
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-05-01",
"count": 1
},
{
"date": "2026-05-03",
"count": 2
},
{
"date": "2026-05-04",
"count": 3
},
{
"date": "2026-05-05",
"count": 1
},
{
"date": "2026-05-06",
"count": 4
},
{
"date": "2026-05-07",
"count": 2
},
{
"date": "2026-05-08",
"count": 3
},
{
"date": "2026-05-09",
"count": 2
},
{
"date": "2026-05-10",
"count": 3
},
{
"date": "2026-05-11",
"count": 5
},
{
"date": "2026-05-13",
"count": 3
},
{
"date": "2026-05-14",
"count": 2
},
{
"date": "2026-05-18",
"count": 3
},
{
"date": "2026-05-20",
"count": 3
},
{
"date": "2026-05-21",
"count": 3
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-23",
"count": 3
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-27",
"count": 3
},
{
"date": "2026-05-28",
"count": 4
},
{
"date": "2026-05-29",
"count": 2
},
{
"date": "2026-05-30",
"count": 3
},
{
"date": "2026-05-31",
"count": 1
},
{
"date": "2026-06-01",
"count": 1
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-06-05",
"count": 3
},
{
"date": "2026-06-06",
"count": 2
},
{
"date": "2026-06-07",
"count": 2
},
{
"date": "2026-06-08",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
},
{
"date": "2026-06-10",
"count": 2
},
{
"date": "2026-06-11",
"count": 3
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-13",
"count": 2
},
{
"date": "2026-06-14",
"count": 2
},
{
"date": "2026-06-15",
"count": 4
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-19",
"count": 3
},
{
"date": "2026-06-21",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-06-23",
"count": 2
},
{
"date": "2026-06-24",
"count": 3
},
{
"date": "2026-06-26",
"count": 1
},
{
"date": "2026-06-27",
"count": 2
},
{
"date": "2026-06-28",
"count": 3
},
{
"date": "2026-06-29",
"count": 2
},
{
"date": "2026-06-30",
"count": 24
},
{
"date": "2026-07-01",
"count": 10
},
{
"date": "2026-07-02",
"count": 11
},
{
"date": "2026-07-03",
"count": 12
},
{
"date": "2026-07-04",
"count": 22
},
{
"date": "2026-07-05",
"count": 15
},
{
"date": "2026-07-06",
"count": 6
},
{
"date": "2026-07-07",
"count": 12
},
{
"date": "2026-07-08",
"count": 4
},
{
"date": "2026-07-09",
"count": 11
},
{
"date": "2026-07-10",
"count": 33
},
{
"date": "2026-07-11",
"count": 20
},
{
"date": "2026-07-12",
"count": 5
},
{
"date": "2026-07-13",
"count": 9
},
{
"date": "2026-07-14",
"count": 8
},
{
"date": "2026-07-15",
"count": 5
},
{
"date": "2026-07-16",
"count": 2
},
{
"date": "2026-07-17",
"count": 3
},
{
"date": "2026-07-18",
"count": 17
},
{
"date": "2026-07-19",
"count": 7
},
{
"date": "2026-07-20",
"count": 8
},
{
"date": "2026-07-21",
"count": 21
}
],
"complete": false,
"collected": 1000,
"total_forks": 22363
},
"star_history": {
"days": [
{
"date": "2025-12-23",
"count": 5
},
{
"date": "2025-12-24",
"count": 2
},
{
"date": "2025-12-25",
"count": 3
},
{
"date": "2025-12-26",
"count": 5
},
{
"date": "2025-12-27",
"count": 4
},
{
"date": "2025-12-28",
"count": 5
},
{
"date": "2025-12-29",
"count": 7
},
{
"date": "2025-12-30",
"count": 6
},
{
"date": "2025-12-31",
"count": 5
},
{
"date": "2026-01-01",
"count": 4
},
{
"date": "2026-01-02",
"count": 5
},
{
"date": "2026-01-03",
"count": 3
},
{
"date": "2026-01-04",
"count": 4
},
{
"date": "2026-01-05",
"count": 8
},
{
"date": "2026-01-06",
"count": 14
},
{
"date": "2026-01-07",
"count": 5
},
{
"date": "2026-01-08",
"count": 10
},
{
"date": "2026-01-09",
"count": 5
},
{
"date": "2026-01-10",
"count": 1
},
{
"date": "2026-01-11",
"count": 5
},
{
"date": "2026-01-12",
"count": 3
},
{
"date": "2026-01-13",
"count": 5
},
{
"date": "2026-01-14",
"count": 5
},
{
"date": "2026-01-15",
"count": 3
},
{
"date": "2026-01-16",
"count": 5
},
{
"date": "2026-01-17",
"count": 3
},
{
"date": "2026-01-18",
"count": 6
},
{
"date": "2026-01-19",
"count": 7
},
{
"date": "2026-01-20",
"count": 4
},
{
"date": "2026-01-21",
"count": 2
},
{
"date": "2026-01-22",
"count": 5
},
{
"date": "2026-01-23",
"count": 3
},
{
"date": "2026-01-24",
"count": 4
},
{
"date": "2026-01-25",
"count": 3
},
{
"date": "2026-01-26",
"count": 5
},
{
"date": "2026-01-27",
"count": 6
},
{
"date": "2026-01-28",
"count": 5
},
{
"date": "2026-01-29",
"count": 6
},
{
"date": "2026-01-30",
"count": 4
},
{
"date": "2026-01-31",
"count": 5
},
{
"date": "2026-02-01",
"count": 4
},
{
"date": "2026-02-02",
"count": 4
},
{
"date": "2026-02-03",
"count": 6
},
{
"date": "2026-02-04",
"count": 5
},
{
"date": "2026-02-05",
"count": 3
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-07",
"count": 7
},
{
"date": "2026-02-08",
"count": 7
},
{
"date": "2026-02-09",
"count": 2
},
{
"date": "2026-02-10",
"count": 5
},
{
"date": "2026-02-11",
"count": 6
},
{
"date": "2026-02-12",
"count": 6
},
{
"date": "2026-02-13",
"count": 7
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-15",
"count": 2
},
{
"date": "2026-02-16",
"count": 1
},
{
"date": "2026-02-17",
"count": 5
},
{
"date": "2026-02-18",
"count": 3
},
{
"date": "2026-02-19",
"count": 9
},
{
"date": "2026-02-20",
"count": 7
},
{
"date": "2026-02-21",
"count": 3
},
{
"date": "2026-02-22",
"count": 3
},
{
"date": "2026-02-23",
"count": 2
},
{
"date": "2026-02-24",
"count": 2
},
{
"date": "2026-02-25",
"count": 7
},
{
"date": "2026-02-26",
"count": 4
},
{
"date": "2026-02-27",
"count": 4
},
{
"date": "2026-02-28",
"count": 7
},
{
"date": "2026-03-01",
"count": 2
},
{
"date": "2026-03-02",
"count": 5
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-04",
"count": 5
},
{
"date": "2026-03-05",
"count": 8
},
{
"date": "2026-03-06",
"count": 3
},
{
"date": "2026-03-07",
"count": 3
},
{
"date": "2026-03-08",
"count": 2
},
{
"date": "2026-03-09",
"count": 2
},
{
"date": "2026-03-10",
"count": 6
},
{
"date": "2026-03-11",
"count": 3
},
{
"date": "2026-03-12",
"count": 2
},
{
"date": "2026-03-13",
"count": 4
},
{
"date": "2026-03-14",
"count": 2
},
{
"date": "2026-03-15",
"count": 2
},
{
"date": "2026-03-16",
"count": 8
},
{
"date": "2026-03-17",
"count": 4
},
{
"date": "2026-03-18",
"count": 4
},
{
"date": "2026-03-19",
"count": 5
},
{
"date": "2026-03-20",
"count": 2
},
{
"date": "2026-03-21",
"count": 4
},
{
"date": "2026-03-22",
"count": 7
},
{
"date": "2026-03-23",
"count": 3
},
{
"date": "2026-03-24",
"count": 11
},
{
"date": "2026-03-25",
"count": 10
},
{
"date": "2026-03-26",
"count": 5
},
{
"date": "2026-03-27",
"count": 5
},
{
"date": "2026-03-28",
"count": 2
},
{
"date": "2026-03-29",
"count": 2
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-03-31",
"count": 5
},
{
"date": "2026-04-01",
"count": 5
},
{
"date": "2026-04-02",
"count": 2
},
{
"date": "2026-04-03",
"count": 4
},
{
"date": "2026-04-04",
"count": 3
},
{
"date": "2026-04-05",
"count": 2
},
{
"date": "2026-04-06",
"count": 3
},
{
"date": "2026-04-07",
"count": 3
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-09",
"count": 7
},
{
"date": "2026-04-10",
"count": 6
},
{
"date": "2026-04-11",
"count": 4
},
{
"date": "2026-04-12",
"count": 4
},
{
"date": "2026-04-13",
"count": 7
},
{
"date": "2026-04-14",
"count": 3
},
{
"date": "2026-04-15",
"count": 8
},
{
"date": "2026-04-16",
"count": 5
},
{
"date": "2026-04-17",
"count": 4
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-19",
"count": 4
},
{
"date": "2026-04-20",
"count": 6
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-22",
"count": 3
},
{
"date": "2026-04-23",
"count": 7
},
{
"date": "2026-04-24",
"count": 7
},
{
"date": "2026-04-25",
"count": 7
},
{
"date": "2026-04-26",
"count": 6
},
{
"date": "2026-04-27",
"count": 2
},
{
"date": "2026-04-28",
"count": 9
},
{
"date": "2026-04-29",
"count": 10
},
{
"date": "2026-04-30",
"count": 4
},
{
"date": "2026-05-01",
"count": 5
},
{
"date": "2026-05-02",
"count": 7
},
{
"date": "2026-05-03",
"count": 4
},
{
"date": "2026-05-04",
"count": 3
},
{
"date": "2026-05-05",
"count": 6
},
{
"date": "2026-05-06",
"count": 3
},
{
"date": "2026-05-07",
"count": 10
},
{
"date": "2026-05-08",
"count": 5
},
{
"date": "2026-05-09",
"count": 2
},
{
"date": "2026-05-10",
"count": 3
},
{
"date": "2026-05-11",
"count": 2
},
{
"date": "2026-05-12",
"count": 1
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-05-14",
"count": 3
},
{
"date": "2026-05-15",
"count": 4
},
{
"date": "2026-05-16",
"count": 5
},
{
"date": "2026-05-17",
"count": 5
},
{
"date": "2026-05-18",
"count": 5
},
{
"date": "2026-05-19",
"count": 6
},
{
"date": "2026-05-20",
"count": 10
},
{
"date": "2026-05-21",
"count": 5
},
{
"date": "2026-05-22",
"count": 4
},
{
"date": "2026-05-23",
"count": 2
},
{
"date": "2026-05-24",
"count": 8
},
{
"date": "2026-05-25",
"count": 11
},
{
"date": "2026-05-26",
"count": 7
},
{
"date": "2026-05-27",
"count": 2
},
{
"date": "2026-05-28",
"count": 6
},
{
"date": "2026-05-29",
"count": 5
},
{
"date": "2026-05-30",
"count": 10
},
{
"date": "2026-05-31",
"count": 5
},
{
"date": "2026-06-01",
"count": 4
},
{
"date": "2026-06-02",
"count": 3
},
{
"date": "2026-06-03",
"count": 3
},
{
"date": "2026-06-04",
"count": 5
},
{
"date": "2026-06-05",
"count": 26
},
{
"date": "2026-06-06",
"count": 5
},
{
"date": "2026-06-07",
"count": 6
},
{
"date": "2026-06-08",
"count": 2
},
{
"date": "2026-06-10",
"count": 24
},
{
"date": "2026-06-11",
"count": 4
},
{
"date": "2026-06-12",
"count": 3
},
{
"date": "2026-06-13",
"count": 6
},
{
"date": "2026-06-14",
"count": 6
},
{
"date": "2026-06-15",
"count": 2
},
{
"date": "2026-06-16",
"count": 6
},
{
"date": "2026-06-17",
"count": 6
},
{
"date": "2026-06-18",
"count": 2
},
{
"date": "2026-06-19",
"count": 2
},
{
"date": "2026-06-20",
"count": 2
},
{
"date": "2026-06-21",
"count": 2
},
{
"date": "2026-06-22",
"count": 4
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-24",
"count": 12
},
{
"date": "2026-06-25",
"count": 3
},
{
"date": "2026-06-26",
"count": 4
},
{
"date": "2026-06-27",
"count": 8
},
{
"date": "2026-06-28",
"count": 1
},
{
"date": "2026-06-29",
"count": 1
},
{
"date": "2026-06-30",
"count": 6
},
{
"date": "2026-07-01",
"count": 3
},
{
"date": "2026-07-02",
"count": 7
},
{
"date": "2026-07-03",
"count": 3
},
{
"date": "2026-07-04",
"count": 5
},
{
"date": "2026-07-05",
"count": 4
},
{
"date": "2026-07-06",
"count": 6
},
{
"date": "2026-07-07",
"count": 5
},
{
"date": "2026-07-08",
"count": 4
},
{
"date": "2026-07-09",
"count": 7
},
{
"date": "2026-07-10",
"count": 4
},
{
"date": "2026-07-11",
"count": 3
},
{
"date": "2026-07-13",
"count": 4
},
{
"date": "2026-07-14",
"count": 5
},
{
"date": "2026-07-15",
"count": 5
},
{
"date": "2026-07-16",
"count": 5
},
{
"date": "2026-07-17",
"count": 2
},
{
"date": "2026-07-18",
"count": 5
},
{
"date": "2026-07-19",
"count": 7
},
{
"date": "2026-07-20",
"count": 9
},
{
"date": "2026-07-21",
"count": 9
}
],
"complete": false,
"collected": 1000,
"total_stars": 58641
},
"open_issues_and_prs": 1555
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": true,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 449565,
"source_files_sampled": 3497,
"oversized_source_files": 39,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 6905
},
"dependencies": {
"manifests": [
"Gemfile",
"actioncable/package.json",
"actiontext/package.json",
"activestorage/package.json",
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 2,
"malicious_count": 0,
"assessed_package": "npm:@rails/actiontext@8.1.300",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm",
"rubygems"
],
"dependencies": [
{
"name": "minitest",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 6.0"
},
{
"name": "minitest-mock",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "releaser",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "sprockets-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 2.0.0"
},
{
"name": "propshaft",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 0.1.7"
},
{
"name": "capybara",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 3.39"
},
{
"name": "selenium-webdriver",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 4.20.0"
},
{
"name": "rack-cache",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 1.2"
},
{
"name": "stimulus-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "turbo-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "jsbundling-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "cssbundling-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "importmap-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 1.2.3"
},
{
"name": "tailwindcss-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "dartsass-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "solid_cache",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "solid_queue",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "solid_cable",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "kamal",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 2.1.0"
},
{
"name": "thruster",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "bcrypt",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 3.1.11"
},
{
"name": "argon2",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.3.2"
},
{
"name": "terser",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 1.1.4"
},
{
"name": "json",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 2.0.0"
},
{
"name": "uri",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 0.13.1"
},
{
"name": "prism",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "1.79.2"
},
{
"name": "rubocop-minitest",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-packaging",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-performance",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-rails",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-md",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubocop-rails-omakase",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "mdl",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "!= 0.13.0"
},
{
"name": "sdoc",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.6.4"
},
{
"name": "redcarpet",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 3.6.1"
},
{
"name": "w3c_validators",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 1.3.6"
},
{
"name": "rouge",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rubyzip",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.0"
},
{
"name": "dalli",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "redis-client",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 0.28.0"
},
{
"name": "listen",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 3.3"
},
{
"name": "libxml-ruby",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "connection_pool",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rexml",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "msgpack",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 1.7.0"
},
{
"name": "bootsnap",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 1.4.4"
},
{
"name": "webrick",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "jbuilder",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "web-console",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rack",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "rack",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "useragent",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "resque",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "resque-scheduler",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "queue_classic",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 4.0.0"
},
{
"name": "sneakers",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "backburner",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "puma",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 5.0.3"
},
{
"name": "redis",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 4.0.1"
},
{
"name": "redis-namespace",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "websocket-client-simple",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "aws-sdk-s3",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "google-cloud-storage",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 1.11"
},
{
"name": "image_processing",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.0"
},
{
"name": "ruby-vips",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 2.3"
},
{
"name": "mini_magick",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 5.0"
},
{
"name": "aws-sdk-sns",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "webmock",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "brakeman",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "bundler-audit",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "nokogiri",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 1.8.1"
},
{
"name": "sqlite3",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 2.1"
},
{
"name": "pg",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 1.3"
},
{
"name": "mysql2",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": "~> 0.5"
},
{
"name": "trilogy",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 2.7.0"
},
{
"name": "tzinfo-data",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "wdm",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": ">= 0.1.0"
},
{
"name": "launchy",
"manifest": "Gemfile",
"ecosystem": "rubygems",
"version_constraint": null
},
{
"name": "@rails/activestorage",
"manifest": "actiontext/package.json",
"ecosystem": "npm",
"version_constraint": ">= 8.1.0-alpha"
},
{
"name": "spark-md5",
"manifest": "activestorage/package.json",
"ecosystem": "npm",
"version_constraint": "^3.0.1"
},
{
"name": "js-sha256",
"manifest": "activestorage/package.json",
"ecosystem": "npm",
"version_constraint": "^0.9.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@rails/activestorage",
"direct": true,
"version": "8.1.0-beta1",
"ecosystem": "npm"
},
{
"name": "@rails/activestorage",
"direct": true,
"version": ">= 8.1.0-alpha",
"ecosystem": "npm"
},
{
"name": "js-sha256",
"direct": true,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "js-sha256",
"direct": true,
"version": "^0.9.0",
"ecosystem": "npm"
},
{
"name": "spark-md5",
"direct": true,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "spark-md5",
"direct": true,
"version": "^3.0.1",
"ecosystem": "npm"
},
{
"name": "argon2",
"direct": true,
"version": "2.3.2",
"ecosystem": "rubygems"
},
{
"name": "aws-sdk-s3",
"direct": true,
"version": "1.197.0",
"ecosystem": "rubygems"
},
{
"name": "aws-sdk-sns",
"direct": true,
"version": "1.92.0",
"ecosystem": "rubygems"
},
{
"name": "backburner",
"direct": true,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "bcrypt",
"direct": true,
"version": "3.1.20",
"ecosystem": "rubygems"
},
{
"name": "bootsnap",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "bootsnap",
"direct": true,
"version": "1.18.4",
"ecosystem": "rubygems"
},
{
"name": "brakeman",
"direct": true,
"version": "7.0.0",
"ecosystem": "rubygems"
},
{
"name": "bundler-audit",
"direct": true,
"version": "0.9.3",
"ecosystem": "rubygems"
},
{
"name": "capybara",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "capybara",
"direct": true,
"version": "3.40.0",
"ecosystem": "rubygems"
},
{
"name": "connection_pool",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "connection_pool",
"direct": true,
"version": "3.0.2",
"ecosystem": "rubygems"
},
{
"name": "cssbundling-rails",
"direct": true,
"version": "1.4.1",
"ecosystem": "rubygems"
},
{
"name": "dalli",
"direct": true,
"version": "5.0.0",
"ecosystem": "rubygems"
},
{
"name": "dartsass-rails",
"direct": true,
"version": "0.5.1",
"ecosystem": "rubygems"
},
{
"name": "google-cloud-storage",
"direct": true,
"version": "1.54.0",
"ecosystem": "rubygems"
},
{
"name": "image_processing",
"direct": true,
"version": "2.0.1",
"ecosystem": "rubygems"
},
{
"name": "importmap-rails",
"direct": true,
"version": "2.1.0",
"ecosystem": "rubygems"
},
{
"name": "jbuilder",
"direct": true,
"version": "2.13.0",
"ecosystem": "rubygems"
},
{
"name": "jsbundling-rails",
"direct": true,
"version": "1.3.1",
"ecosystem": "rubygems"
},
{
"name": "json",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "json",
"direct": true,
"version": "2.20.0",
"ecosystem": "rubygems"
},
{
"name": "kamal",
"direct": true,
"version": "2.4.0",
"ecosystem": "rubygems"
},
{
"name": "launchy",
"direct": true,
"version": "3.0.1",
"ecosystem": "rubygems"
},
{
"name": "libxml-ruby",
"direct": true,
"version": "6.0.0",
"ecosystem": "rubygems"
},
{
"name": "listen",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "listen",
"direct": true,
"version": "3.9.0",
"ecosystem": "rubygems"
},
{
"name": "mdl",
"direct": true,
"version": "0.12.0",
"ecosystem": "rubygems"
},
{
"name": "mini_magick",
"direct": true,
"version": "5.3.1",
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": true,
"version": "5.25.1",
"ecosystem": "rubygems"
},
{
"name": "minitest",
"direct": true,
"version": "6.0.6",
"ecosystem": "rubygems"
},
{
"name": "minitest-mock",
"direct": true,
"version": "5.27.0",
"ecosystem": "rubygems"
},
{
"name": "msgpack",
"direct": true,
"version": "1.7.5",
"ecosystem": "rubygems"
},
{
"name": "mysql2",
"direct": true,
"version": "0.5.6",
"ecosystem": "rubygems"
},
{
"name": "nokogiri",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "nokogiri",
"direct": true,
"version": "1.19.1",
"ecosystem": "rubygems"
},
{
"name": "pg",
"direct": true,
"version": "1.6.3",
"ecosystem": "rubygems"
},
{
"name": "prism",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "prism",
"direct": true,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "propshaft",
"direct": true,
"version": "1.3.1",
"ecosystem": "rubygems"
},
{
"name": "puma",
"direct": true,
"version": "6.5.0",
"ecosystem": "rubygems"
},
{
"name": "queue_classic",
"direct": true,
"version": "4.0.0",
"ecosystem": "rubygems"
},
{
"name": "rack",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rack",
"direct": true,
"version": "3.2.1",
"ecosystem": "rubygems"
},
{
"name": "rack-cache",
"direct": true,
"version": "1.17.0",
"ecosystem": "rubygems"
},
{
"name": "redcarpet",
"direct": true,
"version": "3.6.1",
"ecosystem": "rubygems"
},
{
"name": "redis",
"direct": true,
"version": "5.4.1",
"ecosystem": "rubygems"
},
{
"name": "redis-client",
"direct": true,
"version": "0.28.0",
"ecosystem": "rubygems"
},
{
"name": "redis-namespace",
"direct": true,
"version": "1.11.0",
"ecosystem": "rubygems"
},
{
"name": "resque",
"direct": true,
"version": "2.7.0",
"ecosystem": "rubygems"
},
{
"name": "resque-scheduler",
"direct": true,
"version": "4.11.0",
"ecosystem": "rubygems"
},
{
"name": "rexml",
"direct": true,
"version": "3.4.0",
"ecosystem": "rubygems"
},
{
"name": "rouge",
"direct": true,
"version": "4.6.1",
"ecosystem": "rubygems"
},
{
"name": "rubocop",
"direct": true,
"version": "1.79.2",
"ecosystem": "rubygems"
},
{
"name": "rubocop-md",
"direct": true,
"version": "2.0.1",
"ecosystem": "rubygems"
},
{
"name": "rubocop-minitest",
"direct": true,
"version": "0.37.1",
"ecosystem": "rubygems"
},
{
"name": "rubocop-packaging",
"direct": true,
"version": "0.6.0",
"ecosystem": "rubygems"
},
{
"name": "rubocop-performance",
"direct": true,
"version": "1.24.0",
"ecosystem": "rubygems"
},
{
"name": "rubocop-rails",
"direct": true,
"version": "2.30.3",
"ecosystem": "rubygems"
},
{
"name": "rubocop-rails-omakase",
"direct": true,
"version": "1.0.0",
"ecosystem": "rubygems"
},
{
"name": "ruby-vips",
"direct": true,
"version": "2.3.0",
"ecosystem": "rubygems"
},
{
"name": "rubyzip",
"direct": true,
"version": "2.4.1",
"ecosystem": "rubygems"
},
{
"name": "sdoc",
"direct": true,
"version": "2.6.5",
"ecosystem": "rubygems"
},
{
"name": "selenium-webdriver",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "selenium-webdriver",
"direct": true,
"version": "4.32.0",
"ecosystem": "rubygems"
},
{
"name": "sneakers",
"direct": true,
"version": "2.11.0",
"ecosystem": "rubygems"
},
{
"name": "solid_cable",
"direct": true,
"version": "3.0.5",
"ecosystem": "rubygems"
},
{
"name": "solid_cache",
"direct": true,
"version": "1.0.6",
"ecosystem": "rubygems"
},
{
"name": "solid_queue",
"direct": true,
"version": "1.1.2",
"ecosystem": "rubygems"
},
{
"name": "sprockets-rails",
"direct": true,
"version": "3.5.2",
"ecosystem": "rubygems"
},
{
"name": "sqlite3",
"direct": true,
"version": "2.5.0",
"ecosystem": "rubygems"
},
{
"name": "stimulus-rails",
"direct": true,
"version": "1.3.4",
"ecosystem": "rubygems"
},
{
"name": "tailwindcss-rails",
"direct": true,
"version": "3.2.0",
"ecosystem": "rubygems"
},
{
"name": "terser",
"direct": true,
"version": "1.2.4",
"ecosystem": "rubygems"
},
{
"name": "thruster",
"direct": true,
"version": "0.1.16",
"ecosystem": "rubygems"
},
{
"name": "trilogy",
"direct": true,
"version": "2.11.0",
"ecosystem": "rubygems"
},
{
"name": "turbo-rails",
"direct": true,
"version": "2.0.11",
"ecosystem": "rubygems"
},
{
"name": "tzinfo-data",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "uri",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "uri",
"direct": true,
"version": "1.0.3",
"ecosystem": "rubygems"
},
{
"name": "uri",
"direct": true,
"version": "1.0.4",
"ecosystem": "rubygems"
},
{
"name": "useragent",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "useragent",
"direct": true,
"version": "0.16.11",
"ecosystem": "rubygems"
},
{
"name": "w3c_validators",
"direct": true,
"version": "1.3.7",
"ecosystem": "rubygems"
},
{
"name": "web-console",
"direct": true,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "web-console",
"direct": true,
"version": "4.2.1",
"ecosystem": "rubygems"
},
{
"name": "webmock",
"direct": true,
"version": "3.25.0",
"ecosystem": "rubygems"
},
{
"name": "webrick",
"direct": true,
"version": "1.9.1",
"ecosystem": "rubygems"
},
{
"name": "websocket-client-simple",
"direct": true,
"version": "0.9.0",
"ecosystem": "rubygems"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.22.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.22.5",
"ecosystem": "npm"
},
{
"name": "@babel/highlight",
"direct": false,
"version": "7.22.5",
"ecosystem": "npm"
},
{
"name": "@eggjs/yauzl",
"direct": false,
"version": "2.11.0",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.9.0",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.1",
"ecosystem": "npm"
},
{
"name": "@eslint/config-array",
"direct": false,
"version": "0.21.0",
"ecosystem": "npm"
},
{
"name": "@eslint/config-helpers",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "0.16.0",
"ecosystem": "npm"
},
{
"name": "@eslint/eslintrc",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "9.37.0",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "^9.24.0",
"ecosystem": "npm"
},
{
"name": "@eslint/object-schema",
"direct": false,
"version": "2.1.6",
"ecosystem": "npm"
},
{
"name": "@eslint/plugin-kit",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "@hapi/bourne",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "@humanfs/core",
"direct": false,
"version": "0.19.1",
"ecosystem": "npm"
},
{
"name": "@humanfs/node",
"direct": false,
"version": "0.16.7",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.4.3",
"ecosystem": "npm"
},
{
"name": "@isaacs/cliui",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/source-map",
"direct": false,
"version": "0.3.4",
"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": "@nodable/entities",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@pkgjs/parseargs",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "@promptbook/utils",
"direct": false,
"version": "0.69.5",
"ecosystem": "npm"
},
{
"name": "@puppeteer/browsers",
"direct": false,
"version": "2.13.2",
"ecosystem": "npm"
},
{
"name": "@rollup/plugin-commonjs",
"direct": false,
"version": "19.0.2",
"ecosystem": "npm"
},
{
"name": "@rollup/plugin-commonjs",
"direct": false,
"version": "^19.0.1",
"ecosystem": "npm"
},
{
"name": "@rollup/plugin-node-resolve",
"direct": false,
"version": "11.2.1",
"ecosystem": "npm"
},
{
"name": "@rollup/plugin-node-resolve",
"direct": false,
"version": "15.3.1",
"ecosystem": "npm"
},
{
"name": "@rollup/plugin-node-resolve",
"direct": false,
"version": "^11.0.1",
"ecosystem": "npm"
},
{
"name": "@rollup/pluginutils",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@rollup/pluginutils",
"direct": false,
"version": "5.4.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm-eabi",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-arm64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-x64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-arm64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-x64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-gnueabihf",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-musleabihf",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-musl",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-musl",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-musl",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-musl",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-s390x-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-musl",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openbsd-x64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openharmony-arm64",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-arm64-msvc",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-ia32-msvc",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-gnu",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-msvc",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "@rtsao/scc",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@sindresorhus/is",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "@szmarczak/http-timer",
"direct": false,
"version": "4.0.6",
"ecosystem": "npm"
},
{
"name": "@tootallnate/quickjs-emscripten",
"direct": false,
"version": "0.23.0",
"ecosystem": "npm"
},
{
"name": "@types/accepts",
"direct": false,
"version": "1.3.7",
"ecosystem": "npm"
},
{
"name": "@types/babel__code-frame",
"direct": false,
"version": "7.27.0",
"ecosystem": "npm"
},
{
"name": "@types/body-parser",
"direct": false,
"version": "1.19.6",
"ecosystem": "npm"
},
{
"name": "@types/cacheable-request",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "@types/co-body",
"direct": false,
"version": "6.1.3",
"ecosystem": "npm"
},
{
"name": "@types/command-line-args",
"direct": false,
"version": "5.2.3",
"ecosystem": "npm"
},
{
"name": "@types/connect",
"direct": false,
"version": "3.4.38",
"ecosystem": "npm"
},
{
"name": "@types/content-disposition",
"direct": false,
"version": "0.5.9",
"ecosystem": "npm"
},
{
"name": "@types/convert-source-map",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "@types/cookies",
"direct": false,
"version": "0.9.2",
"ecosystem": "npm"
},
{
"name": "@types/debounce",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "0.0.39",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "@types/express",
"direct": false,
"version": "5.0.6",
"ecosystem": "npm"
},
{
"name": "@types/express-serve-static-core",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "@types/http-assert",
"direct": false,
"version": "1.5.6",
"ecosystem": "npm"
},
{
"name": "@types/http-cache-semantics",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "@types/http-errors",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-coverage",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-report",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-reports",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/json5",
"direct": false,
"version": "0.0.29",
"ecosystem": "npm"
},
{
"name": "@types/keygrip",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "@types/keyv",
"direct": false,
"version": "3.1.4",
"ecosystem": "npm"
},
{
"name": "@types/koa",
"direct": false,
"version": "2.15.2",
"ecosystem": "npm"
},
{
"name": "@types/koa",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/koa-compose",
"direct": false,
"version": "3.2.9",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "20.19.43",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "20.3.2",
"ecosystem": "npm"
},
{
"name": "@types/parse5",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "@types/qs",
"direct": false,
"version": "6.15.1",
"ecosystem": "npm"
},
{
"name": "@types/range-parser",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "@types/resolve",
"direct": false,
"version": "1.17.1",
"ecosystem": "npm"
},
{
"name": "@types/resolve",
"direct": false,
"version": "1.20.2",
"ecosystem": "npm"
},
{
"name": "@types/responselike",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@types/send",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@types/serve-static",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "@types/sinonjs__fake-timers",
"direct": false,
"version": "8.1.5",
"ecosystem": "npm"
},
{
"name": "@types/which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "@types/ws",
"direct": false,
"version": "7.4.7",
"ecosystem": "npm"
},
{
"name": "@types/ws",
"direct": false,
"version": "8.18.1",
"ecosystem": "npm"
},
{
"name": "@types/yauzl",
"direct": false,
"version": "2.10.3",
"ecosystem": "npm"
},
{
"name": "@wdio/config",
"direct": false,
"version": "9.28.0",
"ecosystem": "npm"
},
{
"name": "@wdio/logger",
"direct": false,
"version": "9.18.0",
"ecosystem": "npm"
},
{
"name": "@wdio/protocols",
"direct": false,
"version": "9.28.0",
"ecosystem": "npm"
},
{
"name": "@wdio/repl",
"direct": false,
"version": "9.16.2",
"ecosystem": "npm"
},
{
"name": "@wdio/types",
"direct": false,
"version": "9.28.0",
"ecosystem": "npm"
},
{
"name": "@wdio/utils",
"direct": false,
"version": "9.28.0",
"ecosystem": "npm"
},
{
"name": "@web/browser-logs",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "@web/config-loader",
"direct": false,
"version": "0.3.3",
"ecosystem": "npm"
},
{
"name": "@web/dev-server",
"direct": false,
"version": "0.4.6",
"ecosystem": "npm"
},
{
"name": "@web/dev-server-core",
"direct": false,
"version": "0.7.5",
"ecosystem": "npm"
},
{
"name": "@web/dev-server-rollup",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "@web/parse5-utils",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "@web/test-runner",
"direct": false,
"version": "0.20.2",
"ecosystem": "npm"
},
{
"name": "@web/test-runner",
"direct": false,
"version": "^0.20.2",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-chrome",
"direct": false,
"version": "0.18.1",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-commands",
"direct": false,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-core",
"direct": false,
"version": "0.13.4",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-coverage-v8",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-mocha",
"direct": false,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-saucelabs",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-saucelabs",
"direct": false,
"version": "^0.13.0",
"ecosystem": "npm"
},
{
"name": "@web/test-runner-webdriver",
"direct": false,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "@zip.js/zip.js",
"direct": false,
"version": "2.8.26",
"ecosystem": "npm"
},
{
"name": "abort-controller",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "accepts",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.15.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.12.6",
"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-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "anynum",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "archiver",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "archiver-utils",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "aria-query",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "array-back",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "array-back",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "array-buffer-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "array-includes",
"direct": false,
"version": "3.1.9",
"ecosystem": "npm"
},
{
"name": "array-union",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "array.prototype.findlastindex",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "array.prototype.flat",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "array.prototype.flatmap",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "arraybuffer.prototype.slice",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "ast-types",
"direct": false,
"version": "0.13.4",
"ecosystem": "npm"
},
{
"name": "astral-regex",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "async",
"direct": false,
"version": "3.2.6",
"ecosystem": "npm"
},
{
"name": "async-function",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "asynckit",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "available-typed-arrays",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "b4a",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "bare-events",
"direct": false,
"version": "2.9.1",
"ecosystem": "npm"
},
{
"name": "bare-fs",
"direct": false,
"version": "4.7.2",
"ecosystem": "npm"
},
{
"name": "bare-os",
"direct": false,
"version": "3.9.1",
"ecosystem": "npm"
},
{
"name": "bare-path",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "bare-stream",
"direct": false,
"version": "2.13.2",
"ecosystem": "npm"
},
{
"name": "bare-url",
"direct": false,
"version": "2.4.5",
"ecosystem": "npm"
},
{
"name": "base64-js",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "basic-ftp",
"direct": false,
"version": "5.3.1",
"ecosystem": "npm"
},
{
"name": "bl",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "boolbase",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "buffer",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "buffer-alloc",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "buffer-alloc-unsafe",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "buffer-crc32",
"direct": false,
"version": "0.2.13",
"ecosystem": "npm"
},
{
"name": "buffer-crc32",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "buffer-fill",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "builtin-modules",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "cache-content-type",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "cacheable-lookup",
"direct": false,
"version": "5.0.4",
"ecosystem": "npm"
},
{
"name": "cacheable-request",
"direct": false,
"version": "7.0.4",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "camel-case",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "capital-case",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "5.6.2",
"ecosystem": "npm"
},
{
"name": "chalk-template",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "change-case",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "cheerio",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "cheerio-select",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "chrome-launcher",
"direct": false,
"version": "0.15.2",
"ecosystem": "npm"
},
{
"name": "chromium-bidi",
"direct": false,
"version": "14.0.0",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "clone",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "clone-response",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "co",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "co-body",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "1.9.3",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "combined-stream",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "command-line-args",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "command-line-usage",
"direct": false,
"version": "7.0.4",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "9.5.0",
"ecosystem": "npm"
},
{
"name": "commondir",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "compress-commons",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "compressing",
"direct": false,
"version": "1.10.5",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "constant-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "content-type",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "cookies",
"direct": false,
"version": "0.9.1",
"ecosystem": "npm"
},
{
"name": "core-util-is",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "crc-32",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "crc32-stream",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "css-select",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "css-shorthand-properties",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "css-value",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "css-what",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "data-uri-to-buffer",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-buffer",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-offset",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "debounce",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "2.6.9",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "3.2.7",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.3.4",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decamelize",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "decode-uri-component",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "decompress-response",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "deep-equal",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "deepmerge",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "deepmerge-ts",
"direct": false,
"version": "7.1.5",
"ecosystem": "npm"
},
{
"name": "default-gateway",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "defer-to-connect",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-lazy-prop",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "degenerator",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "delayed-stream",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "delegates",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "dependency-graph",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "destroy",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "devtools-protocol",
"direct": false,
"version": "0.0.1608973",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "dir-glob",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "dom-serializer",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "domelementtype",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "domhandler",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "domutils",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "dot-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "edge-paths",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "edgedriver",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "ee-first",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "encoding-sniffer",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "end-of-stream",
"direct": false,
"version": "1.4.4",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "errorstacks",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "es-abstract",
"direct": false,
"version": "1.24.0",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "es-set-tostringtag",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "es-shim-unscopables",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "es-to-primitive",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-html",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "escodegen",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "9.37.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "^9.24.0",
"ecosystem": "npm"
},
{
"name": "eslint-import-resolver-node",
"direct": false,
"version": "0.3.9",
"ecosystem": "npm"
},
{
"name": "eslint-module-utils",
"direct": false,
"version": "2.12.1",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-import",
"direct": false,
"version": "2.32.0",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-import",
"direct": false,
"version": "^2.31.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "8.4.0",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "4.2.1",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "10.4.0",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "etag",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "event-target-shim",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "events",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "events-universal",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "extract-zip",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-fifo",
"direct": false,
"version": "1.3.2",
"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-xml-builder",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "fast-xml-parser",
"direct": false,
"version": "5.8.0",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.20.1",
"ecosystem": "npm"
},
{
"name": "fd-slicer",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "fd-slicer2",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "filter-obj",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "find-replace",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "flushwritable",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "for-each",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "form-data",
"direct": false,
"version": "4.0.5",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "fs-constants",
"direct": false,
"version": "1.0.0",
"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": "function.prototype.name",
"direct": false,
"version": "1.1.8",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "geckodriver",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "generator-function",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-port",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-ready",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "get-symbol-description",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "get-uri",
"direct": false,
"version": "6.0.5",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "10.5.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "14.0.0",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "^14.0.0",
"ecosystem": "npm"
},
{
"name": "globalthis",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "globalyzer",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "11.1.0",
"ecosystem": "npm"
},
{
"name": "globrex",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "got",
"direct": false,
"version": "11.8.6",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "grapheme-splitter",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "has-bigints",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-proto",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hash.js",
"direct": false,
"version": "1.1.7",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "header-case",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "htmlfy",
"direct": false,
"version": "0.8.1",
"ecosystem": "npm"
},
{
"name": "htmlparser2",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "http-assert",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "http-cache-semantics",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "1.6.3",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "http-proxy-agent",
"direct": false,
"version": "7.0.2",
"ecosystem": "npm"
},
{
"name": "http2-wrapper",
"direct": false,
"version": "1.0.3",
"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.4.24",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "ieee754",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "immediate",
"direct": false,
"version": "3.0.6",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "import-meta-resolve",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "inflation",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "internal-ip",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "internal-slot",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "ip-address",
"direct": false,
"version": "10.2.0",
"ecosystem": "npm"
},
{
"name": "ip-regex",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "is-array-buffer",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "is-async-function",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-bigint",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-boolean-object",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "is-callable",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-data-view",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-docker",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-finalizationregistry",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-generator-function",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-ip",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "is-map",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-module",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-negative-zero",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-number-object",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "is-reference",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-set",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-shared-array-buffer",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-string",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-symbol",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-typed-array",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "is-weakmap",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "is-weakref",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-weakset",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-wsl",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "isbinaryfile",
"direct": false,
"version": "5.0.7",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-report",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-reports",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "jackspeak",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "jest-worker",
"direct": false,
"version": "26.6.2",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "jszip",
"direct": false,
"version": "3.10.1",
"ecosystem": "npm"
},
{
"name": "keygrip",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "koa",
"direct": false,
"version": "2.16.4",
"ecosystem": "npm"
},
{
"name": "koa-compose",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "koa-convert",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "koa-etag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "koa-send",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "koa-static",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "lazystream",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "lie",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "lighthouse-logger",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "locate-app",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"ecosystem": "npm"
},
{
"name": "lodash.camelcase",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "lodash.clonedeep",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "lodash.zip",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "log-update",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "loglevel",
"direct": false,
"version": "1.9.2",
"ecosystem": "npm"
},
{
"name": "loglevel-plugin-prefix",
"direct": false,
"version": "0.8.4",
"ecosystem": "npm"
},
{
"name": "lower-case",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "lowercase-keys",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.4.3",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "7.18.3",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "8.0.5",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.25.9",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "marky",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "0.3.0",
"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": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "mimic-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "mimic-response",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "mimic-response",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "minimalistic-assert",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "5.1.9",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.9",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "mitt",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "mkdirp",
"direct": false,
"version": "0.5.6",
"ecosystem": "npm"
},
{
"name": "mkdirp",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "mock-socket",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "mock-socket",
"direct": false,
"version": "^2.0.0",
"ecosystem": "npm"
},
{
"name": "modern-tar",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "nanocolors",
"direct": false,
"version": "0.2.13",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.12",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "netmask",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "no-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "node-watch",
"direct": false,
"version": "0.7.3",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "normalize-url",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "npm-run-path",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "nth-check",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "object.assign",
"direct": false,
"version": "4.1.7",
"ecosystem": "npm"
},
{
"name": "object.fromentries",
"direct": false,
"version": "2.0.8",
"ecosystem": "npm"
},
{
"name": "object.groupby",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "object.values",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "only",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "open",
"direct": false,
"version": "8.4.2",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "own-keys",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "p-cancelable",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "p-event",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "p-finally",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "p-timeout",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "pac-proxy-agent",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "pac-resolver",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "pako",
"direct": false,
"version": "1.0.11",
"ecosystem": "npm"
},
{
"name": "param-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "7.3.0",
"ecosystem": "npm"
},
{
"name": "parse5-htmlparser2-tree-adapter",
"direct": false,
"version": "7.1.0",
"ecosystem": "npm"
},
{
"name": "parse5-parser-stream",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "parseurl",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "pascal-case",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "path-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-expression-matcher",
"direct": false,
"version": "1.5.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-scurry",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "path-type",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "pend",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "portfinder",
"direct": false,
"version": "1.0.38",
"ecosystem": "npm"
},
{
"name": "possible-typed-array-names",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "process",
"direct": false,
"version": "0.11.10",
"ecosystem": "npm"
},
{
"name": "process-nextick-args",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "progress",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "proxy-agent",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "proxy-from-env",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "pump",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "puppeteer-core",
"direct": false,
"version": "24.43.1",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.11.0",
"ecosystem": "npm"
},
{
"name": "query-selector-shadow-dom",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "query-string",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "quick-lru",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "qunit",
"direct": false,
"version": "2.26.0",
"ecosystem": "npm"
},
{
"name": "qunit",
"direct": false,
"version": "^2.20.0",
"ecosystem": "npm"
},
{
"name": "randombytes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "4.7.0",
"ecosystem": "npm"
},
{
"name": "readdir-glob",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "reflect.getprototypeof",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.2",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.8",
"ecosystem": "npm"
},
{
"name": "resolve-alpn",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-path",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "responselike",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "resq",
"direct": false,
"version": "1.11.0",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "ret",
"direct": false,
"version": "0.5.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rgb2hex",
"direct": false,
"version": "0.2.5",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "2.79.1",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "4.61.1",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "^2.35.1",
"ecosystem": "npm"
},
{
"name": "rollup-plugin-terser",
"direct": false,
"version": "7.0.2",
"ecosystem": "npm"
},
{
"name": "rollup-plugin-terser",
"direct": false,
"version": "^7.0.2",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safaridriver",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "safe-array-concat",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safe-push-apply",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "safe-regex-test",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "safe-regex2",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "saucelabs",
"direct": false,
"version": "9.0.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.4",
"ecosystem": "npm"
},
{
"name": "sentence-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "serialize-error",
"direct": false,
"version": "12.0.0",
"ecosystem": "npm"
},
{
"name": "serialize-javascript",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "set-function-name",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "set-proto",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "setimmediate",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "slice-ansi",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "smart-buffer",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "snake-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "socks",
"direct": false,
"version": "2.8.9",
"ecosystem": "npm"
},
{
"name": "socks-proxy-agent",
"direct": false,
"version": "8.0.5",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "sourcemap-codec",
"direct": false,
"version": "1.4.8",
"ecosystem": "npm"
},
{
"name": "spacetrim",
"direct": false,
"version": "0.11.59",
"ecosystem": "npm"
},
{
"name": "split-on-first",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "split2",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "stop-iteration-iterator",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "streamifier",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "streamx",
"direct": false,
"version": "2.27.0",
"ecosystem": "npm"
},
{
"name": "strict-uri-encode",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "string-width-cjs",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string.prototype.trim",
"direct": false,
"version": "1.2.10",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimend",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimstart",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-ansi-cjs",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "3.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": "strnum",
"direct": false,
"version": "2.4.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "table-layout",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "tar-fs",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "tar-stream",
"direct": false,
"version": "1.6.2",
"ecosystem": "npm"
},
{
"name": "tar-stream",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "teex",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.18.2",
"ecosystem": "npm"
},
{
"name": "text-decoder",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "tiny-glob",
"direct": false,
"version": "0.2.9",
"ecosystem": "npm"
},
{
"name": "to-buffer",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "toidentifier",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "trix",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "trix",
"direct": false,
"version": "^2.0.0",
"ecosystem": "npm"
},
{
"name": "tsconfig-paths",
"direct": false,
"version": "3.15.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsscmp",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "tunnel",
"direct": false,
"version": "0.0.6",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.21.3",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "4.26.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "4.41.0",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "1.6.18",
"ecosystem": "npm"
},
{
"name": "typed-array-buffer",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-length",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-offset",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "typed-array-length",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "typed-query-selector",
"direct": false,
"version": "2.12.2",
"ecosystem": "npm"
},
{
"name": "typical",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "typical",
"direct": false,
"version": "7.3.0",
"ecosystem": "npm"
},
{
"name": "unbox-primitive",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "6.26.0",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "7.27.2",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "unpipe",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "upper-case",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "upper-case-first",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "urijs",
"direct": false,
"version": "1.17.1",
"ecosystem": "npm"
},
{
"name": "urlpattern-polyfill",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "userhome",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "v8-to-istanbul",
"direct": false,
"version": "9.3.0",
"ecosystem": "npm"
},
{
"name": "vary",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "wait-port",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "web-test-runner-qunit",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "web-test-runner-qunit",
"direct": false,
"version": "^2.0.0",
"ecosystem": "npm"
},
{
"name": "webdriver",
"direct": false,
"version": "9.28.0",
"ecosystem": "npm"
},
{
"name": "webdriver-bidi-protocol",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "webdriverio",
"direct": false,
"version": "9.28.0",
"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": "which",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "which-boxed-primitive",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "which-builtin-type",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "which-collection",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "which-typed-array",
"direct": false,
"version": "1.1.19",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wordwrapjs",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi-cjs",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "7.5.11",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.21.0",
"ecosystem": "npm"
},
{
"name": "xml-naming",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "xtend",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "17.7.2",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "21.1.1",
"ecosystem": "npm"
},
{
"name": "yauzl",
"direct": false,
"version": "2.10.0",
"ecosystem": "npm"
},
{
"name": "yazl",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "ylru",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "zip-stream",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "zod",
"direct": false,
"version": "3.25.76",
"ecosystem": "npm"
},
{
"name": "action_text-trix",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "action_text-trix",
"direct": false,
"version": "2.1.16",
"ecosystem": "rubygems"
},
{
"name": "addressable",
"direct": false,
"version": "2.8.7",
"ecosystem": "rubygems"
},
{
"name": "amq-protocol",
"direct": false,
"version": "2.3.2",
"ecosystem": "rubygems"
},
{
"name": "ast",
"direct": false,
"version": "2.4.2",
"ecosystem": "rubygems"
},
{
"name": "aws-eventstream",
"direct": false,
"version": "1.4.0",
"ecosystem": "rubygems"
},
{
"name": "aws-partitions",
"direct": false,
"version": "1.1150.0",
"ecosystem": "rubygems"
},
{
"name": "aws-sdk-core",
"direct": false,
"version": "3.230.0",
"ecosystem": "rubygems"
},
{
"name": "aws-sdk-kms",
"direct": false,
"version": "1.110.0",
"ecosystem": "rubygems"
},
{
"name": "aws-sigv4",
"direct": false,
"version": "1.12.1",
"ecosystem": "rubygems"
},
{
"name": "base64",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "base64",
"direct": false,
"version": "0.3.0",
"ecosystem": "rubygems"
},
{
"name": "bcrypt_pbkdf",
"direct": false,
"version": "1.1.1",
"ecosystem": "rubygems"
},
{
"name": "beaneater",
"direct": false,
"version": "1.1.3",
"ecosystem": "rubygems"
},
{
"name": "bigdecimal",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "bigdecimal",
"direct": false,
"version": "4.1.2",
"ecosystem": "rubygems"
},
{
"name": "bindex",
"direct": false,
"version": "0.8.1",
"ecosystem": "rubygems"
},
{
"name": "builder",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "builder",
"direct": false,
"version": "3.3.0",
"ecosystem": "rubygems"
},
{
"name": "bundler",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "bunny",
"direct": false,
"version": "2.23.0",
"ecosystem": "rubygems"
},
{
"name": "byebug",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "chef-utils",
"direct": false,
"version": "18.6.2",
"ecosystem": "rubygems"
},
{
"name": "childprocess",
"direct": false,
"version": "5.1.0",
"ecosystem": "rubygems"
},
{
"name": "chromedriver-helper",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "concurrent-ruby",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "concurrent-ruby",
"direct": false,
"version": "1.3.6",
"ecosystem": "rubygems"
},
{
"name": "crack",
"direct": false,
"version": "1.0.0",
"ecosystem": "rubygems"
},
{
"name": "crass",
"direct": false,
"version": "1.0.6",
"ecosystem": "rubygems"
},
{
"name": "dante",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "date",
"direct": false,
"version": "3.4.1",
"ecosystem": "rubygems"
},
{
"name": "debug",
"direct": false,
"version": "1.10.0",
"ecosystem": "rubygems"
},
{
"name": "declarative",
"direct": false,
"version": "0.0.20",
"ecosystem": "rubygems"
},
{
"name": "digest-crc",
"direct": false,
"version": "0.6.5",
"ecosystem": "rubygems"
},
{
"name": "dotenv",
"direct": false,
"version": "3.1.7",
"ecosystem": "rubygems"
},
{
"name": "drb",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "drb",
"direct": false,
"version": "2.2.3",
"ecosystem": "rubygems"
},
{
"name": "ed25519",
"direct": false,
"version": "1.3.0",
"ecosystem": "rubygems"
},
{
"name": "erb",
"direct": false,
"version": "5.1.1",
"ecosystem": "rubygems"
},
{
"name": "erubi",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "erubi",
"direct": false,
"version": "1.13.1",
"ecosystem": "rubygems"
},
{
"name": "et-orbi",
"direct": false,
"version": "1.2.11",
"ecosystem": "rubygems"
},
{
"name": "event_emitter",
"direct": false,
"version": "0.2.6",
"ecosystem": "rubygems"
},
{
"name": "execjs",
"direct": false,
"version": "2.10.0",
"ecosystem": "rubygems"
},
{
"name": "faraday",
"direct": false,
"version": "2.14.0",
"ecosystem": "rubygems"
},
{
"name": "faraday-net_http",
"direct": false,
"version": "3.4.2",
"ecosystem": "rubygems"
},
{
"name": "ffi",
"direct": false,
"version": "1.17.1",
"ecosystem": "rubygems"
},
{
"name": "ffi-compiler",
"direct": false,
"version": "1.3.2",
"ecosystem": "rubygems"
},
{
"name": "fugit",
"direct": false,
"version": "1.11.1",
"ecosystem": "rubygems"
},
{
"name": "globalid",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "globalid",
"direct": false,
"version": "1.4.0",
"ecosystem": "rubygems"
},
{
"name": "google-apis-core",
"direct": false,
"version": "0.15.1",
"ecosystem": "rubygems"
},
{
"name": "google-apis-iamcredentials_v1",
"direct": false,
"version": "0.22.0",
"ecosystem": "rubygems"
},
{
"name": "google-apis-storage_v1",
"direct": false,
"version": "0.49.0",
"ecosystem": "rubygems"
},
{
"name": "google-cloud-core",
"direct": false,
"version": "1.7.1",
"ecosystem": "rubygems"
},
{
"name": "google-cloud-env",
"direct": false,
"version": "2.2.1",
"ecosystem": "rubygems"
},
{
"name": "google-cloud-errors",
"direct": false,
"version": "1.4.0",
"ecosystem": "rubygems"
},
{
"name": "google-logging-utils",
"direct": false,
"version": "0.1.0",
"ecosystem": "rubygems"
},
{
"name": "google-protobuf",
"direct": false,
"version": "4.29.3",
"ecosystem": "rubygems"
},
{
"name": "googleauth",
"direct": false,
"version": "1.12.2",
"ecosystem": "rubygems"
},
{
"name": "hashdiff",
"direct": false,
"version": "1.1.2",
"ecosystem": "rubygems"
},
{
"name": "httpclient",
"direct": false,
"version": "2.9.0",
"ecosystem": "rubygems"
},
{
"name": "i18n",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "i18n",
"direct": false,
"version": "1.14.8",
"ecosystem": "rubygems"
},
{
"name": "io-console",
"direct": false,
"version": "0.8.1",
"ecosystem": "rubygems"
},
{
"name": "irb",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "irb",
"direct": false,
"version": "1.15.2",
"ecosystem": "rubygems"
},
{
"name": "jmespath",
"direct": false,
"version": "1.6.2",
"ecosystem": "rubygems"
},
{
"name": "jwt",
"direct": false,
"version": "2.10.1",
"ecosystem": "rubygems"
},
{
"name": "kramdown",
"direct": false,
"version": "2.5.1",
"ecosystem": "rubygems"
},
{
"name": "kramdown-parser-gfm",
"direct": false,
"version": "1.1.0",
"ecosystem": "rubygems"
},
{
"name": "language_server-protocol",
"direct": false,
"version": "3.17.0.3",
"ecosystem": "rubygems"
},
{
"name": "lint_roller",
"direct": false,
"version": "1.1.0",
"ecosystem": "rubygems"
},
{
"name": "logger",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "logger",
"direct": false,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "loofah",
"direct": false,
"version": "2.25.0",
"ecosystem": "rubygems"
},
{
"name": "mail",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "mail",
"direct": false,
"version": "2.8.1",
"ecosystem": "rubygems"
},
{
"name": "marcel",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "marcel",
"direct": false,
"version": "1.2.1",
"ecosystem": "rubygems"
},
{
"name": "matrix",
"direct": false,
"version": "0.4.2",
"ecosystem": "rubygems"
},
{
"name": "mini_mime",
"direct": false,
"version": "1.1.5",
"ecosystem": "rubygems"
},
{
"name": "mini_portile2",
"direct": false,
"version": "2.8.9",
"ecosystem": "rubygems"
},
{
"name": "minitest-retry",
"direct": false,
"version": "0.2.3",
"ecosystem": "rubygems"
},
{
"name": "mixlib-cli",
"direct": false,
"version": "2.1.8",
"ecosystem": "rubygems"
},
{
"name": "mixlib-config",
"direct": false,
"version": "3.0.27",
"ecosystem": "rubygems"
},
{
"name": "mixlib-shellout",
"direct": false,
"version": "3.3.4",
"ecosystem": "rubygems"
},
{
"name": "mono_logger",
"direct": false,
"version": "1.1.2",
"ecosystem": "rubygems"
},
{
"name": "multi_json",
"direct": false,
"version": "1.15.0",
"ecosystem": "rubygems"
},
{
"name": "mustermann",
"direct": false,
"version": "3.0.4",
"ecosystem": "rubygems"
},
{
"name": "mutex_m",
"direct": false,
"version": "0.3.0",
"ecosystem": "rubygems"
},
{
"name": "net-http",
"direct": false,
"version": "0.6.0",
"ecosystem": "rubygems"
},
{
"name": "net-http",
"direct": false,
"version": "0.9.1",
"ecosystem": "rubygems"
},
{
"name": "net-imap",
"direct": false,
"version": "0.5.5",
"ecosystem": "rubygems"
},
{
"name": "net-pop",
"direct": false,
"version": "0.1.2",
"ecosystem": "rubygems"
},
{
"name": "net-protocol",
"direct": false,
"version": "0.2.2",
"ecosystem": "rubygems"
},
{
"name": "net-scp",
"direct": false,
"version": "4.0.0",
"ecosystem": "rubygems"
},
{
"name": "net-sftp",
"direct": false,
"version": "4.0.0",
"ecosystem": "rubygems"
},
{
"name": "net-smtp",
"direct": false,
"version": "0.5.1",
"ecosystem": "rubygems"
},
{
"name": "net-ssh",
"direct": false,
"version": "7.3.0",
"ecosystem": "rubygems"
},
{
"name": "nio4r",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "nio4r",
"direct": false,
"version": "2.7.4",
"ecosystem": "rubygems"
},
{
"name": "os",
"direct": false,
"version": "1.1.4",
"ecosystem": "rubygems"
},
{
"name": "ostruct",
"direct": false,
"version": "0.6.1",
"ecosystem": "rubygems"
},
{
"name": "parallel",
"direct": false,
"version": "1.26.3",
"ecosystem": "rubygems"
},
{
"name": "parser",
"direct": false,
"version": "3.3.9.0",
"ecosystem": "rubygems"
},
{
"name": "pp",
"direct": false,
"version": "0.6.2",
"ecosystem": "rubygems"
},
{
"name": "prettyprint",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "protobug",
"direct": false,
"version": "0.1.0",
"ecosystem": "rubygems"
},
{
"name": "protobug_googleapis_field_behavior_protos",
"direct": false,
"version": "0.1.0",
"ecosystem": "rubygems"
},
{
"name": "protobug_sigstore_protos",
"direct": false,
"version": "0.1.0",
"ecosystem": "rubygems"
},
{
"name": "protobug_well_known_protos",
"direct": false,
"version": "0.1.0",
"ecosystem": "rubygems"
},
{
"name": "psych",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "psych",
"direct": false,
"version": "5.2.6",
"ecosystem": "rubygems"
},
{
"name": "public_suffix",
"direct": false,
"version": "6.0.1",
"ecosystem": "rubygems"
},
{
"name": "raabro",
"direct": false,
"version": "1.4.0",
"ecosystem": "rubygems"
},
{
"name": "racc",
"direct": false,
"version": "1.8.1",
"ecosystem": "rubygems"
},
{
"name": "rack-protection",
"direct": false,
"version": "4.1.1",
"ecosystem": "rubygems"
},
{
"name": "rack-session",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rack-session",
"direct": false,
"version": "2.1.1",
"ecosystem": "rubygems"
},
{
"name": "rack-test",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rack-test",
"direct": false,
"version": "2.2.0",
"ecosystem": "rubygems"
},
{
"name": "rackup",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rackup",
"direct": false,
"version": "2.2.1",
"ecosystem": "rubygems"
},
{
"name": "ractor-dispatch",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "ractor-dispatch",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "rails-dom-testing",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rails-dom-testing",
"direct": false,
"version": "2.3.0",
"ecosystem": "rubygems"
},
{
"name": "rails-html-sanitizer",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rails-html-sanitizer",
"direct": false,
"version": "1.7.0",
"ecosystem": "rubygems"
},
{
"name": "rainbow",
"direct": false,
"version": "3.1.1",
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": "13.2.1",
"ecosystem": "rubygems"
},
{
"name": "rake",
"direct": false,
"version": "13.3.0",
"ecosystem": "rubygems"
},
{
"name": "rb-fsevent",
"direct": false,
"version": "0.11.2",
"ecosystem": "rubygems"
},
{
"name": "rb-inotify",
"direct": false,
"version": "0.11.1",
"ecosystem": "rubygems"
},
{
"name": "rbtree",
"direct": false,
"version": "0.4.7",
"ecosystem": "rubygems"
},
{
"name": "rdoc",
"direct": false,
"version": "6.15.0",
"ecosystem": "rubygems"
},
{
"name": "regexp_parser",
"direct": false,
"version": "2.10.0",
"ecosystem": "rubygems"
},
{
"name": "reline",
"direct": false,
"version": "0.6.1",
"ecosystem": "rubygems"
},
{
"name": "representable",
"direct": false,
"version": "3.2.0",
"ecosystem": "rubygems"
},
{
"name": "retriable",
"direct": false,
"version": "3.1.2",
"ecosystem": "rubygems"
},
{
"name": "rubocop-ast",
"direct": false,
"version": "1.46.0",
"ecosystem": "rubygems"
},
{
"name": "ruby-progressbar",
"direct": false,
"version": "1.13.0",
"ecosystem": "rubygems"
},
{
"name": "ruby2_keywords",
"direct": false,
"version": "0.0.5",
"ecosystem": "rubygems"
},
{
"name": "rufus-scheduler",
"direct": false,
"version": "3.9.2",
"ecosystem": "rubygems"
},
{
"name": "sass-embedded",
"direct": false,
"version": "1.83.4",
"ecosystem": "rubygems"
},
{
"name": "securerandom",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "securerandom",
"direct": false,
"version": "0.4.1",
"ecosystem": "rubygems"
},
{
"name": "serverengine",
"direct": false,
"version": "2.0.7",
"ecosystem": "rubygems"
},
{
"name": "set",
"direct": false,
"version": "1.1.2",
"ecosystem": "rubygems"
},
{
"name": "sigdump",
"direct": false,
"version": "0.2.5",
"ecosystem": "rubygems"
},
{
"name": "signet",
"direct": false,
"version": "0.19.0",
"ecosystem": "rubygems"
},
{
"name": "sigstore",
"direct": false,
"version": "0.2.2",
"ecosystem": "rubygems"
},
{
"name": "sigstore-cli",
"direct": false,
"version": "0.2.2",
"ecosystem": "rubygems"
},
{
"name": "sinatra",
"direct": false,
"version": "4.1.1",
"ecosystem": "rubygems"
},
{
"name": "sorted_set",
"direct": false,
"version": "1.0.3",
"ecosystem": "rubygems"
},
{
"name": "spring",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "spring-watcher-listen",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "sprockets",
"direct": false,
"version": "4.2.1",
"ecosystem": "rubygems"
},
{
"name": "sshkit",
"direct": false,
"version": "1.23.2",
"ecosystem": "rubygems"
},
{
"name": "stackprof",
"direct": false,
"version": "0.2.28",
"ecosystem": "rubygems"
},
{
"name": "stringio",
"direct": false,
"version": "3.1.7",
"ecosystem": "rubygems"
},
{
"name": "tailwindcss-ruby",
"direct": false,
"version": "3.4.17",
"ecosystem": "rubygems"
},
{
"name": "thor",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "thor",
"direct": false,
"version": "1.3.2",
"ecosystem": "rubygems"
},
{
"name": "thor",
"direct": false,
"version": "1.4.0",
"ecosystem": "rubygems"
},
{
"name": "tilt",
"direct": false,
"version": "2.6.1",
"ecosystem": "rubygems"
},
{
"name": "timeout",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "timeout",
"direct": false,
"version": "0.4.3",
"ecosystem": "rubygems"
},
{
"name": "tomlrb",
"direct": false,
"version": "2.0.3",
"ecosystem": "rubygems"
},
{
"name": "trailblazer-option",
"direct": false,
"version": "0.1.2",
"ecosystem": "rubygems"
},
{
"name": "tsort",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "tsort",
"direct": false,
"version": "0.2.0",
"ecosystem": "rubygems"
},
{
"name": "tzinfo",
"direct": false,
"version": null,
"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": "3.1.4",
"ecosystem": "rubygems"
},
{
"name": "unicode-emoji",
"direct": false,
"version": "4.2.0",
"ecosystem": "rubygems"
},
{
"name": "websocket",
"direct": false,
"version": "1.2.11",
"ecosystem": "rubygems"
},
{
"name": "websocket-driver",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "websocket-driver",
"direct": false,
"version": "0.7.7",
"ecosystem": "rubygems"
},
{
"name": "websocket-extensions",
"direct": false,
"version": "0.1.5",
"ecosystem": "rubygems"
},
{
"name": "xpath",
"direct": false,
"version": "3.2.0",
"ecosystem": "rubygems"
},
{
"name": "zeitwerk",
"direct": false,
"version": null,
"ecosystem": "rubygems"
},
{
"name": "zeitwerk",
"direct": false,
"version": "2.7.3",
"ecosystem": "rubygems"
}
],
"collected": true,
"truncated": false,
"total_count": 1056,
"direct_count": 97,
"indirect_count": 959
}
},
"maintainership": {
"issues": {
"open_prs": 1078,
"merged_prs": 26641,
"open_issues": 477,
"closed_ratio": 0.974,
"closed_issues": 18148,
"closed_unmerged_prs": 11319
},
"bus_factor": 10,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "rafaelfranca",
"commits": 9074,
"avatar_url": "https://avatars.githubusercontent.com/u/47848?v=4"
},
{
"type": "User",
"login": "tenderlove",
"commits": 5321,
"avatar_url": "https://avatars.githubusercontent.com/u/3124?v=4"
},
{
"type": "User",
"login": "kamipo",
"commits": 4216,
"avatar_url": "https://avatars.githubusercontent.com/u/12642?v=4"
},
{
"type": "User",
"login": "jeremy",
"commits": 3757,
"avatar_url": "https://avatars.githubusercontent.com/u/199?v=4"
},
{
"type": "User",
"login": "byroot",
"commits": 2866,
"avatar_url": "https://avatars.githubusercontent.com/u/44640?v=4"
},
{
"type": "User",
"login": "fxn",
"commits": 2748,
"avatar_url": "https://avatars.githubusercontent.com/u/3387?v=4"
},
{
"type": "User",
"login": "josevalim",
"commits": 2358,
"avatar_url": "https://avatars.githubusercontent.com/u/9582?v=4"
},
{
"type": "User",
"login": "eileencodes",
"commits": 1985,
"avatar_url": "https://avatars.githubusercontent.com/u/1080678?v=4"
},
{
"type": "User",
"login": "senny",
"commits": 1626,
"avatar_url": "https://avatars.githubusercontent.com/u/5402?v=4"
},
{
"type": "User",
"login": "carlosantoniodasilva",
"commits": 1622,
"avatar_url": "https://avatars.githubusercontent.com/u/26328?v=4"
}
],
"contributors_sampled": 100,
"top_contributor_share": 0.129
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"devcontainer-shellcheck.yml",
"devcontainer-smoke-test.yml",
"labeler.yml",
"more-info-needed.yml",
"rail_inspector.yml",
"rails-new-docker.yml",
"rails_releaser_tests.yml",
"release.yml",
"stale.yml"
],
"has_docs_dir": false,
"linter_configs": [
".rubocop.yml",
"eslint.config.mjs"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Gemfile.lock",
"yarn.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"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": "15 out of 15 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": 2,
"reason": "badge detected: InProgress",
"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 83 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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 4 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": 2,
"reason": "dependency not pinned by hash detected -- score normalized to 2",
"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": 10,
"reason": "security policy file 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": 7,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "113 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "964294f99bfcfc0131e73255db8b6620fd726f01",
"ran_at": "2026-07-21T23:15:23Z",
"aggregate_score": 5.8,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-21T23:14:12Z",
"oldest_open_prs": [
{
"number": 37724,
"created_at": "2019-11-15T00:53:54Z",
"last_comment_at": "2024-04-28T06:23:01Z",
"last_comment_author": "marckohlbrugge"
},
{
"number": 37807,
"created_at": "2019-11-26T22:07:48Z",
"last_comment_at": "2026-05-29T10:32:40Z",
"last_comment_author": "GermanDZ"
},
{
"number": 38146,
"created_at": "2020-01-03T09:27:56Z",
"last_comment_at": "2026-05-15T21:23:20Z",
"last_comment_author": "rafaelfranca"
},
{
"number": 38721,
"created_at": "2020-03-13T19:15:01Z",
"last_comment_at": "2021-07-20T03:52:34Z",
"last_comment_author": "chaffeqa"
},
{
"number": 39113,
"created_at": "2020-05-02T09:25:14Z",
"last_comment_at": "2025-11-13T20:04:10Z",
"last_comment_author": "jagthedrummer"
},
{
"number": 39150,
"created_at": "2020-05-05T05:33:01Z",
"last_comment_at": "2022-03-06T04:18:32Z",
"last_comment_author": "rails-bot"
},
{
"number": 39207,
"created_at": "2020-05-09T14:19:33Z",
"last_comment_at": "2021-07-12T10:48:12Z",
"last_comment_author": "p8"
},
{
"number": 39299,
"created_at": "2020-05-15T15:35:45Z",
"last_comment_at": "2025-11-16T02:00:31Z",
"last_comment_author": "nerijunior"
},
{
"number": 39445,
"created_at": "2020-05-27T01:41:09Z",
"last_comment_at": "2024-08-16T06:08:59Z",
"last_comment_author": "lucianghinda"
},
{
"number": 39473,
"created_at": "2020-05-29T15:03:43Z",
"last_comment_at": "2022-01-24T03:35:47Z",
"last_comment_author": "rails-bot"
},
{
"number": 39476,
"created_at": "2020-05-29T19:01:22Z",
"last_comment_at": "2021-06-01T01:20:36Z",
"last_comment_author": "lfalcao"
},
{
"number": 39487,
"created_at": "2020-05-30T23:15:22Z",
"last_comment_at": "2022-04-20T21:18:48Z",
"last_comment_author": "rails-bot"
},
{
"number": 39585,
"created_at": "2020-06-10T05:08:19Z",
"last_comment_at": "2024-07-01T05:07:30Z",
"last_comment_author": "chrisandreae"
},
{
"number": 39623,
"created_at": "2020-06-14T05:32:16Z",
"last_comment_at": "2024-05-07T20:59:48Z",
"last_comment_author": "collimarco"
},
{
"number": 39863,
"created_at": "2020-07-17T14:24:10Z",
"last_comment_at": "2025-03-17T17:23:29Z",
"last_comment_author": "abdelbk"
},
{
"number": 40337,
"created_at": "2020-10-05T18:27:44Z",
"last_comment_at": "2023-12-23T23:07:31Z",
"last_comment_author": "northeastprince"
},
{
"number": 40401,
"created_at": "2020-10-16T16:51:21Z",
"last_comment_at": "2023-04-22T01:37:05Z",
"last_comment_author": "agrobbin"
},
{
"number": 40525,
"created_at": "2020-11-03T18:06:08Z",
"last_comment_at": "2025-12-22T22:21:23Z",
"last_comment_author": "benjaaguila"
},
{
"number": 41004,
"created_at": "2021-01-03T17:17:35Z",
"last_comment_at": "2025-05-22T18:41:33Z",
"last_comment_author": "james-caresnap"
},
{
"number": 41136,
"created_at": "2021-01-16T01:58:42Z",
"last_comment_at": "2022-01-24T07:36:29Z",
"last_comment_author": "rails-bot"
}
],
"last_merged_pr_at": "2026-07-21T23:14:06Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 3508,
"created_at": "2011-11-04T04:11:25Z",
"last_comment_at": "2026-05-15T20:27:46Z",
"last_comment_author": "github-actions"
},
{
"number": 7047,
"created_at": "2012-07-13T18:30:14Z",
"last_comment_at": "2020-11-03T03:46:56Z",
"last_comment_author": "bobmazanec"
},
{
"number": 7218,
"created_at": "2012-07-31T21:30:49Z",
"last_comment_at": "2019-01-19T04:39:32Z",
"last_comment_author": "sheldond"
},
{
"number": 12940,
"created_at": "2013-11-18T17:04:55Z",
"last_comment_at": "2023-11-16T05:43:24Z",
"last_comment_author": "giovannism20"
},
{
"number": 13873,
"created_at": "2014-01-29T16:29:44Z",
"last_comment_at": "2021-05-18T03:01:33Z",
"last_comment_author": "tbcooney"
},
{
"number": 14358,
"created_at": "2014-03-12T12:03:50Z",
"last_comment_at": "2024-06-16T19:02:24Z",
"last_comment_author": "willianveiga"
},
{
"number": 14698,
"created_at": "2014-04-11T02:30:50Z",
"last_comment_at": "2023-10-09T19:54:57Z",
"last_comment_author": "lcreid"
},
{
"number": 15097,
"created_at": "2014-05-13T21:51:48Z",
"last_comment_at": "2021-07-13T10:33:39Z",
"last_comment_author": "p8"
},
{
"number": 15470,
"created_at": "2014-06-02T16:24:57Z",
"last_comment_at": "2021-07-11T20:18:00Z",
"last_comment_author": "p8"
},
{
"number": 15589,
"created_at": "2014-06-09T14:39:03Z",
"last_comment_at": "2017-07-10T17:29:12Z",
"last_comment_author": "Edouard-chin"
},
{
"number": 15854,
"created_at": "2014-06-22T04:04:53Z",
"last_comment_at": "2026-01-31T16:21:06Z",
"last_comment_author": "eric1234"
},
{
"number": 16452,
"created_at": "2014-08-10T18:35:37Z",
"last_comment_at": "2026-02-05T02:30:53Z",
"last_comment_author": "eric1234"
},
{
"number": 16823,
"created_at": "2014-09-05T22:17:25Z",
"last_comment_at": "2015-04-20T18:18:56Z",
"last_comment_author": "al2o3cr"
},
{
"number": 17225,
"created_at": "2014-10-10T04:54:28Z",
"last_comment_at": "2019-07-01T22:19:04Z",
"last_comment_author": "blairanderson"
},
{
"number": 17325,
"created_at": "2014-10-19T17:58:52Z",
"last_comment_at": "2022-11-16T05:56:16Z",
"last_comment_author": "lazaronixon"
},
{
"number": 17466,
"created_at": "2014-10-31T21:14:29Z",
"last_comment_at": "2025-01-04T07:44:00Z",
"last_comment_author": "joshuay03"
},
{
"number": 17599,
"created_at": "2014-11-12T20:42:49Z",
"last_comment_at": "2019-12-21T10:34:42Z",
"last_comment_author": "arknamal"
},
{
"number": 17706,
"created_at": "2014-11-21T20:05:24Z",
"last_comment_at": "2023-03-17T14:47:49Z",
"last_comment_author": "hrdwdmrbl"
},
{
"number": 17887,
"created_at": "2014-12-02T20:27:25Z",
"last_comment_at": "2016-04-07T16:56:34Z",
"last_comment_author": "haruska"
},
{
"number": 18818,
"created_at": "2015-02-05T04:15:45Z",
"last_comment_at": "2022-09-07T18:31:06Z",
"last_comment_author": "klondikemarlen"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/rails/rails",
"host": "github.com",
"name": "rails",
"owner": "rails"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": null,
"notes": [],
"value": 86,
"inputs": {
"security": 66,
"vitality": 96,
"community": 97,
"governance": 91,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 96,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"commits_last_year": 3266,
"human_commit_share": 1,
"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": "3266 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 3266
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 4 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": 90,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v8.1.3",
"releases_from_tags": false,
"days_since_latest_release": 119,
"mean_days_between_releases": 16.3
},
"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 119 days ago",
"points": 27,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 119
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~16.3 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 16.3
}
}
],
"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": "excellent",
"name": "Community & Adoption",
"value": 97,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"forks": 22363,
"stars": 58641,
"watchers": 2334,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "58,641 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 58641
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "22,363 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 22363
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "2,334 watchers",
"points": 15,
"status": "met",
"details": [
{
"code": "watchers",
"params": {
"count": 2334
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"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": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"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": [
"rails",
"@rails/actiontext",
"@rails/actioncable",
"railties",
"@rails/activestorage",
"activejob",
"actionpack",
"actiontext"
],
"dependents": null,
"ecosystems": "npm, rubygems",
"total_downloads": 3438251676,
"monthly_downloads": 12634223
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "12,634,223 downloads/month across npm, rubygems",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 12634223,
"ecosystems": "npm, rubygems"
}
}
],
"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": "excellent",
"name": "Sustainability & Governance",
"value": 91,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "excellent",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 97,
"inputs": {
"bus_factor": 10,
"contributors_sampled": 100,
"top_contributor_share": 0.129
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "10 contributor(s) cover half of all commits",
"points": 54,
"status": "met",
"details": [
{
"code": "bus_factor",
"params": {
"count": 10
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 13% of commits",
"points": 19.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 13
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "100 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 100
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 83 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 87,
"inputs": {
"merged_prs": 26641,
"open_issues": 477,
"closed_issues": 18148,
"issue_closed_ratio": 0.974,
"closed_unmerged_prs": 11319
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "97% of issues closed",
"points": 45.5,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 97
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "26641/37960 decided PRs merged",
"points": 26.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 26641,
"decided": 37960
}
}
],
"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": 80,
"inputs": {
"followers": 2680,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "rails",
"public_repos": 127,
"account_age_days": 6684
},
"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": "2,680 followers of rails",
"points": 24.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 2680,
"login": "rails"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "127 public repos, account ~18 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 127
}
},
{
"code": "account_age_years",
"params": {
"years": 18
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"rails",
"@rails/actiontext",
"@rails/actioncable",
"railties",
"@rails/activestorage",
"activejob",
"actionpack",
"actiontext"
],
"ecosystems": "npm, rubygems",
"any_deprecated": false,
"min_days_since_publish": 119
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "8 package(s) on npm, rubygems",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 8,
"ecosystems": "npm, rubygems"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 119 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 119
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "516 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 516
}
}
],
"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": "good",
"name": "Engineering Quality",
"value": 76,
"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": "9 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 9
}
}
],
"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": ".rubocop.yml, eslint.config.mjs",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml, eslint.config.mjs"
}
}
],
"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": "15 out of 15 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"rails",
"mvc",
"html",
"activerecord",
"activejob",
"ruby",
"framework"
],
"has_wiki": false,
"homepage": "https://rubyonrails.org",
"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": "https://rubyonrails.org",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "7 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 7
}
}
],
"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": "moderate",
"name": "Security",
"value": 66,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 58,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "15 out of 15 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": "badge detected: InProgress",
"points": 0.5,
"status": "partial",
"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 83 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": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 2",
"points": 1,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"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": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "113 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@rails/actiontext@8.1.300 runtime dependency closure — what installing the published package pulls in — 2 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "npm:@rails/actiontext@8.1.300",
"assessed": 2
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 2,
"unassessed_packages": 0,
"affected_by_severity": "none",
"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": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"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": 2,
"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": 22
},
"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": "moderate",
"name": "AI Readiness",
"value": 61,
"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": 0.87,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 6905
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.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": "87 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 87,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Gemfile.lock",
"yarn.lock"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": true,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.04,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".rubocop.yml, eslint.config.mjs",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".rubocop.yml, eslint.config.mjs"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "devcontainer, Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "devcontainer, Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "4 of the last 100 commits agent-authored or agent-credited",
"points": 8,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 4,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 2",
"points": 2,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"primary_language": "Ruby",
"largest_source_bytes": 449565,
"source_files_sampled": 3497,
"oversized_source_files": 39
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Ruby without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Ruby"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "39/3497 source files over 60KB",
"points": 54.4,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 3497,
"oversized": 39
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"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": [],
"report_type": "repository",
"generated_at": "2026-07-21T23:15:52.789308Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rails/rails.svg",
"full_name": "rails/rails",
"license_state": "standard",
"license_spdx": "MIT"
}Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.
Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.26.0 — full methodology · metrics wiki.
How one result sits in the wider record: aggregate statistics — RubyGems, npm.