{"id":529,"name":null,"description":"WebSocket protocol handler with pluggable I/O","url":"https://github.com/faye/websocket-driver-ruby","last_synced_at":"2026-06-16T00:01:27.352Z","repository":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2026-06-04T16:31:28.000Z","size":2867,"stargazers_count":239,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-15T11:05:02.432Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-06-04T16:26:46.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34385031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"packages":[{"id":13713594,"name":"ruby-websocket-driver","ecosystem":"debian","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:44:12.314Z","latest_release_published_at":"2026-02-12T23:44:12.314Z","latest_release_number":"0.6.3-3","last_synced_at":"2026-03-13T15:48:09.409Z","created_at":"2026-02-12T23:44:12.120Z","updated_at":"2026-03-13T15:48:09.409Z","registry_url":"https://tracker.debian.org/pkg/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":"https://packages.debian.org/bookworm/ruby-websocket-driver","metadata":{"component":"main","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:44:12.964Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-websocket-driver?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-27T18:20:38.992Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":13805564,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:35:42.285Z","latest_release_published_at":"2026-02-13T18:35:42.285Z","latest_release_number":"0.6.3-3build5","last_synced_at":"2026-03-13T19:24:59.277Z","created_at":"2026-02-13T18:35:42.012Z","updated_at":"2026-03-13T19:24:59.278Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T18:35:43.713Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-27T18:20:38.051Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":13407503,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T16:13:00.601Z","latest_release_published_at":"2026-02-06T16:13:00.601Z","latest_release_number":"0.6.3-3build7","last_synced_at":"2026-03-06T16:42:49.888Z","created_at":"2026-02-06T16:13:00.307Z","updated_at":"2026-03-06T16:42:49.889Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-27T18:20:35.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":13669732,"name":"ruby-websocket-driver","ecosystem":"debian","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:48:38.326Z","latest_release_published_at":"2026-02-12T12:48:38.326Z","latest_release_number":"0.6.3-3","last_synced_at":"2026-03-13T14:09:05.469Z","created_at":"2026-02-12T12:48:37.007Z","updated_at":"2026-03-13T14:09:05.469Z","registry_url":"https://tracker.debian.org/pkg/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":"https://packages.debian.org/trixie/ruby-websocket-driver","metadata":{"component":"main","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:48:38.950Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-websocket-driver?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-04-27T18:20:39.853Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}},{"id":13606243,"name":"ruby-websocket-driver","ecosystem":"debian","description":null,"homepage":"http://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:29:25.855Z","latest_release_published_at":"2026-02-11T11:29:25.855Z","latest_release_number":"0.6.3-2","last_synced_at":"2026-03-13T19:04:01.104Z","created_at":"2026-02-11T11:29:25.591Z","updated_at":"2026-03-13T19:04:01.104Z","registry_url":"https://tracker.debian.org/pkg/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":"https://packages.debian.org/buster/ruby-websocket-driver","metadata":{"component":"main","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"3.9.7","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T15:15:30.113Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-websocket-driver?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-05-22T18:14:24.960Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13751909,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"http://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:25:33.070Z","latest_release_published_at":"2026-02-13T07:25:33.070Z","latest_release_number":"0.6.3-2build4","last_synced_at":"2026-03-13T14:27:24.656Z","created_at":"2026-02-13T07:25:32.874Z","updated_at":"2026-03-13T14:27:24.657Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"3.9.7","maintainer":"Ubuntu Developers \u003cubuntu-devel-discuss@lists.ubuntu.com\u003e","build_depends":"debhelper (\u003e= 9~), gem2deb, ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:25:33.753Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-27T18:20:36.874Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":13531189,"name":"ruby-websocket-driver","ecosystem":"debian","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:41:30.992Z","latest_release_published_at":"2026-02-10T23:41:30.992Z","latest_release_number":"0.6.3-3","last_synced_at":"2026-03-14T07:19:24.487Z","created_at":"2026-02-10T23:41:30.806Z","updated_at":"2026-03-14T07:19:24.488Z","registry_url":"https://tracker.debian.org/pkg/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":"https://packages.debian.org/bullseye/ruby-websocket-driver","metadata":{"component":"main","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:27:10.337Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-websocket-driver?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-27T18:20:39.352Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":13567383,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:52:32.898Z","latest_release_published_at":"2026-02-11T06:52:32.898Z","latest_release_number":"0.6.3-3build5","last_synced_at":"2026-03-11T14:11:20.320Z","created_at":"2026-02-11T06:52:32.724Z","updated_at":"2026-03-11T14:11:20.321Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:57:19.610Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-27T18:20:38.741Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":328098,"name":"websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":64,"first_release_published_at":"2013-05-04T18:43:53.484Z","latest_release_published_at":"2025-05-25T17:41:25.258Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-26T05:01:06.709Z","created_at":"2022-04-06T12:21:20.192Z","updated_at":"2026-05-26T05:02:00.314Z","registry_url":"https://rubygems.org/gems/websocket-driver","install_command":"gem install websocket-driver -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-26T05:02:00.314Z","dependent_packages_count":62,"downloads":601235256,"downloads_period":"total","dependent_repos_count":389382,"rankings":{"downloads":0.040699813784413647,"dependent_repos_count":0.04850525752389023,"dependent_packages_count":0.44323769806313484,"stargazers_count":3.8508714220403433,"forks_count":3.9339436446962006,"docker_downloads_count":0.1527636846154704,"average":1.4116702534539087},"purl":"pkg:gem/websocket-driver","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/websocket-driver","docker_dependents_count":1162,"docker_downloads_count":777476670,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/websocket-driver/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver/codemeta","maintainers":[{"uuid":"21202","login":"jcoglan","name":null,"email":null,"url":null,"packages_count":25,"html_url":"https://rubygems.org/profiles/jcoglan","role":null,"created_at":"2022-11-14T22:39:19.901Z","updated_at":"2022-11-14T22:39:19.901Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/jcoglan/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207358,"maintainers_count":68794,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":13780061,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:28:36.817Z","latest_release_published_at":"2026-02-13T13:28:36.817Z","latest_release_number":"0.6.3-3build3","last_synced_at":"2026-03-13T23:40:37.474Z","created_at":"2026-02-13T13:28:36.613Z","updated_at":"2026-03-13T23:40:37.474Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:28:37.391Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-27T18:20:36.155Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":13467494,"name":"ruby-websocket-driver","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/faye/websocket-driver-ruby","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:32:51.671Z","latest_release_published_at":"2026-02-09T17:32:51.671Z","latest_release_number":"0.6.3-3ubuntu1","last_synced_at":"2026-03-09T18:23:59.568Z","created_at":"2026-02-09T17:32:51.379Z","updated_at":"2026-03-09T18:32:54.766Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-websocket-driver","install_command":"apt-get install ruby-websocket-driver","documentation_url":null,"metadata":{"component":"universe","architecture":"any","priority":"optional","binary":"ruby-websocket-driver","standards_version":"4.5.0","maintainer":"Ubuntu Developers \u003cubuntu-devel-discuss@lists.ubuntu.com\u003e","build_depends":"debhelper-compat (= 12), gem2deb (\u003e= 1.0~), ruby-websocket-extensions (\u003e= 0.1.0)","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":null,"dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-websocket-driver?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-04-27T18:20:37.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":13950275,"name":"ruby-websocket-driver","ecosystem":"guix","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"expat","normalized_licenses":["Other"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2026-03-02T18:54:09.469Z","latest_release_published_at":"2026-03-02T18:54:09.469Z","latest_release_number":"0.7.1","last_synced_at":"2026-04-27T16:17:39.100Z","created_at":"2026-03-02T18:54:09.265Z","updated_at":"2026-04-27T16:17:40.236Z","registry_url":"https://packages.guix.gnu.org/packages/ruby-websocket-driver/0.7.1/","install_command":"guix install ruby-websocket-driver","documentation_url":"https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ruby-xyz.scm#n10922","metadata":{"location":"gnu/packages/ruby-xyz.scm:10922","variable_name":"ruby-websocket-driver"},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":228,"open_issues_count":11,"forks_count":47,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-03-25T15:39:56.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-01-03T17:41:17.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31166803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-29T21:28:10.185Z","status":"ssl_error","status_checked_at":"2026-03-29T21:23:32.226Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-04-27T16:17:40.214Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:guix/ruby-websocket-driver","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/guix/ruby-websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/guix/ruby-websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/guix/ruby-websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-websocket-driver/codemeta","maintainers":[],"registry":{"name":"guix","url":"https://guix.gnu.org","ecosystem":"guix","default":true,"packages_count":31481,"maintainers_count":0,"namespaces_count":0,"keywords_count":1627,"github":"guix-mirror","metadata":{"funded_packages_count":352},"icon_url":"https://github.com/guix-mirror.png","created_at":"2026-03-02T16:23:46.981Z","updated_at":"2026-05-07T05:00:22.550Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/guix/namespaces"}},{"id":328099,"name":"websocket-driver-kontena","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O (without native c-extension)","homepage":"http://github.com/faye/websocket-driver-ruby","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2017-06-02T06:06:44.777Z","latest_release_published_at":"2017-06-02T06:06:44.777Z","latest_release_number":"0.6.5","last_synced_at":"2026-05-24T10:19:45.134Z","created_at":"2022-04-06T12:21:20.548Z","updated_at":"2026-05-24T10:19:45.134Z","registry_url":"https://rubygems.org/gems/websocket-driver-kontena","install_command":"gem install websocket-driver-kontena -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/websocket-driver-kontena/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2024-07-18T09:25:00.000Z","size":2836,"stargazers_count":223,"open_issues_count":10,"forks_count":45,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-09-04T04:31:59.484Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2024-09-03T09:08:45.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":417,"total_committers":18,"mean_commits":"23.166666666666668","dds":0.05515587529976018,"last_synced_commit":"58d4ed742749dfb3b4f568df36a5365088361220"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217753735,"owners_count":16225041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[{"name":"0.7.6","sha":"2e5faf6b2b833d741ebd63da6aae206fa626c881","kind":"tag","published_at":"2023-07-25T17:16:11.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.6","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.6/manifests"},{"name":"0.7.5","sha":"911d14b96ae604bb0d22ef584cff5af578e6702f","kind":"tag","published_at":"2021-06-12T16:16:00.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.5","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.5/manifests"},{"name":"0.7.4","sha":"41d20e42feb2ac811cdb6dfb4541302eb56cd8a3","kind":"tag","published_at":"2021-05-24T22:37:23.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.4","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.4/manifests"},{"name":"0.7.3","sha":"eb643f59499dec53939b30eebba5ca2f5e7296a7","kind":"tag","published_at":"2020-07-09T18:28:36.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.3","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.3/manifests"},{"name":"0.7.2","sha":"f882bc56d530564614c5ad81e61eb99c445bd99a","kind":"tag","published_at":"2020-05-22T15:08:46.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.2","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.2/manifests"},{"name":"0.7.1","sha":"92334974c56f1e7f1d6b026e2f3b8ee7adc29bf4","kind":"tag","published_at":"2019-06-10T11:42:09.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.1","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.1/manifests"},{"name":"0.7.0","sha":"12d2aa8a80fcae4414276675245021a55b58871a","kind":"tag","published_at":"2017-09-11T21:18:55.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.7.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.7.0/manifests"},{"name":"0.6.5","sha":"38b8f63f1040bb36a7bf6d3e75f8a4fdaf192eaf","kind":"tag","published_at":"2017-01-22T20:04:18.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.5","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.5/manifests"},{"name":"0.6.4","sha":"673d11e43658e4eabafc41b52cb074accd603caf","kind":"tag","published_at":"2016-05-20T07:47:15.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.4","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.4/manifests"},{"name":"0.6.3","sha":"d515dc08946e3cadba0cca707d7a80f9689ba611","kind":"tag","published_at":"2015-11-06T22:34:15.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.3","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.3/manifests"},{"name":"0.6.2","sha":"adfe77192332055a9d97139496047e2b6176ea41","kind":"tag","published_at":"2015-07-18T16:56:33.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.2","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.2/manifests"},{"name":"0.6.1","sha":"198a04a537e4bd7cec5368dd5601e73d27c26eab","kind":"tag","published_at":"2015-07-13T19:25:02.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.1","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.1/manifests"},{"name":"0.6.0","sha":"f1fd96e09340f787e44013e441583a39eb75ff32","kind":"tag","published_at":"2015-07-08T19:33:56.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.6.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.6.0/manifests"},{"name":"0.5.4","sha":"c074c9dd10fa23eacc117f533375276300532530","kind":"tag","published_at":"2015-03-29T22:22:15.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.5.4","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.4/manifests"},{"name":"0.5.3","sha":"47fe3a74796ff440e34cd50a5d75f6e2aa3e7ea4","kind":"tag","published_at":"2015-02-22T21:14:31.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.5.3","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.3/manifests"},{"name":"0.5.2","sha":"fcef3f6a310aea57a0505d97c828439000998e12","kind":"tag","published_at":"2015-02-19T22:53:01.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.5.2","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.2/manifests"},{"name":"0.5.1","sha":"487965545ea7cc5b8faeca7800904f894b5db7a9","kind":"tag","published_at":"2014-12-18T02:15:50.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.5.1","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.1/manifests"},{"name":"0.5.0","sha":"b99ab25583bc0301a3c2ce2346a3d7dbb3656389","kind":"tag","published_at":"2014-12-13T13:43:58.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.5.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"93c7cf16b37b3b0715df868d3691ec08edbf6135","kind":"tag","published_at":"2014-11-08T19:53:26.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.4.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.4.0/manifests"},{"name":"0.3.5","sha":"4ffaca8319181f3d2365a4400317619af911e1d7","kind":"tag","published_at":"2014-10-04T07:48:04.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.5","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.5/manifests"},{"name":"0.3.4","sha":"cec958a5bcf2d5ee1b8cc7770a49cb09ada8cb70","kind":"tag","published_at":"2014-07-06T09:28:24.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.4","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.4/manifests"},{"name":"0.3.3","sha":"854d185d5df50bc0498c55c0b4682732a6edd41e","kind":"tag","published_at":"2014-04-24T22:40:18.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.3","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.3/manifests"},{"name":"0.3.2","sha":"2b389ed50c3b50a4ae8b0884288f0ab7fcc668aa","kind":"tag","published_at":"2013-12-29T12:33:43.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.2","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.2/manifests"},{"name":"0.3.1","sha":"f098f1d0d1f3dc4d3fa01bc2d70e21b7e43c10cc","kind":"tag","published_at":"2013-12-03T00:52:56.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.1","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.1/manifests"},{"name":"0.3.0","sha":"2264d94961813580d9fda7e07d7cc4961f8e3c9d","kind":"tag","published_at":"2013-09-09T21:17:50.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.3.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.3.0/manifests"},{"name":"0.2.3","sha":"d5a270a655ace5f76acacd816b2d189d28a8d951","kind":"tag","published_at":"2013-08-04T13:01:43.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.2.3","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.3/manifests"},{"name":"0.2.2","sha":"7b304697db2dc23680ab31e080dfddfc486fa0b1","kind":"tag","published_at":"2013-08-04T11:23:12.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.2.2","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.2/manifests"},{"name":"0.2.1","sha":"cdd83c4c9de252e3f2a24df6434ae60c05d35d7e","kind":"tag","published_at":"2013-07-05T14:12:30.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.2.1","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"ae84f0eaf7e0d46f66658f5675c77b928fd23644","kind":"tag","published_at":"2013-05-12T14:27:39.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.2.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.2.0/manifests"},{"name":"0.1.0","sha":"93dd655d6da416b8d0ea11378cc34cf6aa9507b7","kind":"tag","published_at":"2013-05-04T18:39:41.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.1.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.1.0/manifests"},{"name":"0.0.0","sha":"1b6e521390a47678e28e371aac66afbd94f24041","kind":"tag","published_at":"2013-04-22T08:09:18.000Z","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/0.0.0","html_url":"https://github.com/faye/websocket-driver-ruby/releases/tag/0.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags/0.0.0/manifests"}]},"repo_metadata_updated_at":"2024-09-07T15:07:11.839Z","dependent_packages_count":1,"downloads":8140,"downloads_period":"total","dependent_repos_count":1,"rankings":{"downloads":55.37876361756757,"dependent_repos_count":21.743943003551042,"dependent_packages_count":7.744041532289782,"stargazers_count":3.82285849130811,"forks_count":3.940648684484047,"docker_downloads_count":null,"average":18.52605106584011},"purl":"pkg:gem/websocket-driver-kontena","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/websocket-driver-kontena","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/websocket-driver-kontena","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/websocket-driver-kontena/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-09-07T15:02:38.635Z","issues_count":103,"pull_requests_count":59,"avg_time_to_close_issue":10693772.79120879,"avg_time_to_close_pull_request":4404886.5344827585,"issues_closed_count":91,"pull_requests_closed_count":58,"pull_request_authors_count":27,"issue_authors_count":52,"avg_comments_per_issue":6.213592233009709,"avg_comments_per_pull_request":5.796610169491525,"merged_pull_requests_count":23,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":59137.5,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":2.5,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/websocket-driver-kontena/codemeta","maintainers":[{"uuid":"82059","login":"jakolehm","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://rubygems.org/profiles/jakolehm","role":null,"created_at":"2022-11-09T09:56:29.924Z","updated_at":"2022-11-09T09:56:29.924Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/jakolehm/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207358,"maintainers_count":68794,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12354574,"name":"websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":64,"first_release_published_at":"2013-05-04T18:43:53.484Z","latest_release_published_at":"2025-05-25T17:41:25.258Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T09:29:37.170Z","created_at":"2025-10-07T06:54:16.397Z","updated_at":"2026-05-24T13:10:33.540Z","registry_url":"https://gem.coop/gems/websocket-driver","install_command":"gem install websocket-driver -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:10:33.540Z","dependent_packages_count":0,"downloads":600760042,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.04000713640811604,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.11948077224586007,"average":0.03987197716349403},"purl":"pkg:gem/websocket-driver?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/websocket-driver","docker_dependents_count":1162,"docker_downloads_count":777476670,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver/codemeta","maintainers":[{"uuid":"21202","login":"jcoglan","name":null,"email":null,"url":null,"packages_count":25,"html_url":"https://gem.coop/profiles/jcoglan","role":null,"created_at":"2025-10-08T07:58:12.176Z","updated_at":"2025-10-08T07:58:12.176Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/jcoglan/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192195,"maintainers_count":67803,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":12372677,"name":"ed-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:13:00.205Z","latest_release_published_at":"2025-10-10T20:13:02.797Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T10:19:45.470Z","created_at":"2025-10-10T20:15:19.709Z","updated_at":"2026-05-24T13:14:07.336Z","registry_url":"https://gem.coop/gems/ed-precompiled_websocket-driver","install_command":"gem install ed-precompiled_websocket-driver -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/ed-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:14:07.336Z","dependent_packages_count":0,"downloads":989,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":99.36399693075833,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":3.8716545176507458,"forks_count":3.9894522405883404,"docker_downloads_count":null,"average":21.445020737799485},"purl":"pkg:gem/ed-precompiled_websocket-driver?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://gem.coop/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:13:51.837Z","updated_at":"2025-10-12T10:13:51.837Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/edouardchin/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192195,"maintainers_count":67803,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":12372701,"name":"ed2-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:20:32.211Z","latest_release_published_at":"2025-10-10T20:20:34.458Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T10:19:45.535Z","created_at":"2025-10-10T20:30:56.893Z","updated_at":"2026-05-24T13:14:07.373Z","registry_url":"https://rubygems.org/gems/ed2-precompiled_websocket-driver","install_command":"gem install ed2-precompiled_websocket-driver -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/ed2-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:14:07.372Z","dependent_packages_count":0,"downloads":1009,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":91.94252437270258,"dependent_repos_count":43.59014059885623,"dependent_packages_count":14.230701995354995,"stargazers_count":3.6294169059807717,"forks_count":3.7532775627419155,"docker_downloads_count":null,"average":31.429212287127296},"purl":"pkg:gem/ed2-precompiled_websocket-driver","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed2-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed2-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed2-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed2-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://rubygems.org/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:22:33.778Z","updated_at":"2025-10-12T10:22:33.778Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/edouardchin/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207358,"maintainers_count":68794,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12372734,"name":"ed3-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:42:50.861Z","latest_release_published_at":"2025-10-10T20:42:53.124Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T10:19:45.832Z","created_at":"2025-10-10T20:45:21.869Z","updated_at":"2026-05-24T13:14:07.425Z","registry_url":"https://gem.coop/gems/ed3-precompiled_websocket-driver","install_command":"gem install ed3-precompiled_websocket-driver -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/ed3-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:14:07.425Z","dependent_packages_count":0,"downloads":1254,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":99.40992748376219,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":3.8716545176507458,"forks_count":3.9894522405883404,"docker_downloads_count":null,"average":21.454206848400254},"purl":"pkg:gem/ed3-precompiled_websocket-driver?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed3-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed3-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed3-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed3-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://gem.coop/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:30:24.396Z","updated_at":"2025-10-12T10:30:24.396Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/edouardchin/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192195,"maintainers_count":67803,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":12372735,"name":"ed3-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:42:50.861Z","latest_release_published_at":"2025-10-10T20:42:53.124Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T13:02:10.143Z","created_at":"2025-10-10T20:45:27.841Z","updated_at":"2026-05-24T13:24:28.927Z","registry_url":"https://rubygems.org/gems/ed3-precompiled_websocket-driver","install_command":"gem install ed3-precompiled_websocket-driver -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/ed3-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:24:28.927Z","dependent_packages_count":0,"downloads":1254,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":91.97948297906345,"dependent_repos_count":43.59014059885623,"dependent_packages_count":14.230701995354995,"stargazers_count":3.6294169059807717,"forks_count":3.7532775627419155,"docker_downloads_count":null,"average":31.436604008399474},"purl":"pkg:gem/ed3-precompiled_websocket-driver","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed3-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed3-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed3-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed3-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://rubygems.org/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:30:25.160Z","updated_at":"2025-10-12T10:30:25.160Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/edouardchin/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207358,"maintainers_count":68794,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12354575,"name":"websocket-driver-kontena","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O (without native c-extension)","homepage":"http://github.com/faye/websocket-driver-ruby","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2017-06-02T06:06:44.777Z","latest_release_published_at":"2017-06-02T06:06:44.777Z","latest_release_number":"0.6.5","last_synced_at":"2026-05-24T13:02:10.536Z","created_at":"2025-10-07T06:54:16.439Z","updated_at":"2026-05-24T13:24:28.935Z","registry_url":"https://gem.coop/gems/websocket-driver-kontena","install_command":"gem install websocket-driver-kontena -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/websocket-driver-kontena/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:24:28.935Z","dependent_packages_count":0,"downloads":8142,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":56.27929861745671,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":18.759766205818902},"purl":"pkg:gem/websocket-driver-kontena?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/websocket-driver-kontena","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/websocket-driver-kontena","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/websocket-driver-kontena/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/websocket-driver-kontena/codemeta","maintainers":[{"uuid":"82059","login":"jakolehm","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://gem.coop/profiles/jakolehm","role":null,"created_at":"2025-10-10T01:08:04.327Z","updated_at":"2025-10-10T01:08:04.327Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/jakolehm/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192195,"maintainers_count":67803,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":12372700,"name":"ed2-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:20:32.211Z","latest_release_published_at":"2025-10-10T20:20:34.458Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T13:02:10.558Z","created_at":"2025-10-10T20:30:31.666Z","updated_at":"2026-05-24T13:24:28.949Z","registry_url":"https://gem.coop/gems/ed2-precompiled_websocket-driver","install_command":"gem install ed2-precompiled_websocket-driver -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/ed2-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:24:28.949Z","dependent_packages_count":0,"downloads":1009,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":99.3715619630178,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":3.8716545176507458,"forks_count":3.9894522405883404,"docker_downloads_count":null,"average":21.446533744251376},"purl":"pkg:gem/ed2-precompiled_websocket-driver?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed2-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed2-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed2-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/ed2-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://gem.coop/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:22:23.746Z","updated_at":"2025-10-12T10:22:23.746Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/edouardchin/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192195,"maintainers_count":67803,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":12372678,"name":"ed-precompiled_websocket-driver","ecosystem":"rubygems","description":"WebSocket protocol handler with pluggable I/O","homepage":"https://github.com/faye/websocket-driver-ruby","licenses":"Apache-2.0","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/faye/websocket-driver-ruby","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2025-10-10T20:13:00.205Z","latest_release_published_at":"2025-10-10T20:13:02.797Z","latest_release_number":"0.8.0","last_synced_at":"2026-05-24T13:02:09.274Z","created_at":"2025-10-10T20:15:23.914Z","updated_at":"2026-05-24T13:24:28.999Z","registry_url":"https://rubygems.org/gems/ed-precompiled_websocket-driver","install_command":"gem install ed-precompiled_websocket-driver -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/ed-precompiled_websocket-driver/","metadata":{"funding":null},"repo_metadata":{"id":7864102,"uuid":"9236384","full_name":"faye/websocket-driver-ruby","owner":"faye","description":"WebSocket protocol handler with pluggable I/O","archived":false,"fork":false,"pushed_at":"2025-05-25T17:42:59.000Z","size":2856,"stargazers_count":227,"open_issues_count":11,"forks_count":47,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-12T07:06:23.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faye.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-04-05T07:54:49.000Z","updated_at":"2026-04-10T06:14:39.000Z","dependencies_parsed_at":"2024-06-17T16:30:47.702Z","dependency_job_id":"79f0c894-f933-4bb0-a426-b4dfda9a61a4","html_url":"https://github.com/faye/websocket-driver-ruby","commit_stats":{"total_commits":420,"total_committers":19,"mean_commits":"22.105263157894736","dds":0.05714285714285716,"last_synced_commit":"3e099cb57b7bae66d497b19ca826bbea924238a8"},"previous_names":["faye/websocket-protocol-ruby"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/faye/websocket-driver-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","download_url":"https://codeload.github.com/faye/websocket-driver-ruby/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/sbom","scorecard":{"id":394042,"data":{"date":"2025-08-11","repo":{"name":"github.com/faye/websocket-driver-ruby","commit":"2824edc61bd3b93458b34054e29c313d8493f7db"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/26 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":9,"reason":"10 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/faye/websocket-driver-ruby/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: non-200 OK status code: 502 Bad Gateway body: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T18:31:31.392Z","repository_id":7864102,"created_at":"2025-08-18T18:31:31.392Z","updated_at":"2025-08-18T18:31:31.392Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"faye","name":"faye","uuid":"1277447","kind":"organization","description":null,"email":null,"website":"http://faye.jcoglan.com","location":"London, UK","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1277447?v=4","repositories_count":14,"last_synced_at":"2024-04-09T13:26:01.621Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/faye","funding_links":[],"total_stars":6631,"followers":14,"following":0,"created_at":"2022-11-02T16:17:25.773Z","updated_at":"2024-04-09T13:26:02.356Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faye/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-05-24T13:24:28.999Z","dependent_packages_count":0,"downloads":989,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":91.9350327633051,"dependent_repos_count":43.59014059885623,"dependent_packages_count":14.230701995354995,"stargazers_count":3.6294169059807717,"forks_count":3.7532775627419155,"docker_downloads_count":null,"average":31.4277139652478},"purl":"pkg:gem/ed-precompiled_websocket-driver","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/ed-precompiled_websocket-driver","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/ed-precompiled_websocket-driver","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/ed-precompiled_websocket-driver/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-05-21T07:01:46.963Z","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/ed-precompiled_websocket-driver/codemeta","maintainers":[{"uuid":"102509","login":"edouardchin","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://rubygems.org/profiles/edouardchin","role":null,"created_at":"2025-10-12T10:13:52.117Z","updated_at":"2025-10-12T10:13:52.117Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/edouardchin/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207358,"maintainers_count":68794,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}}],"commits":{"id":19627,"full_name":"faye/websocket-driver-ruby","default_branch":"main","total_commits":435,"total_committers":21,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":20.714285714285715,"dds":0.05977011494252871,"past_year_total_commits":5,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.0,"last_synced_at":"2026-06-13T10:02:16.333Z","last_synced_commit":"5cab908d5e72d40345751edbd4f1e1ef75d53d89","created_at":"2023-03-07T11:41:39.022Z","updated_at":"2026-06-13T10:02:07.020Z","committers":[{"name":"James Coglan","email":"jcoglan@gmail.com","login":"jcoglan","count":409},{"name":"Steven Williamson","email":"steve@freeagent.com","login":"stevenwilliamson","count":3},{"name":"Jon Leighton","email":"j@jonathanleighton.com","login":"jonleighton","count":2},{"name":"Keith Barrette","email":"etterrab@gmail.com","login":"kbarrette","count":2},{"name":"Matthew O'Riordan","email":"matthew.oriordan@gmail.com","login":"mattheworiordan","count":2},{"name":"Samuel Williams","email":"samuel.williams@oriontransfer.co.nz","login":"ioquatix","count":2},{"name":"botanicus","email":"stastny@101ideas.cz","login":null,"count":1},{"name":"Akira Matsuda","email":"ronnie@dio.jp","login":"amatsuda","count":1},{"name":"Asmod4n","email":"Asmod4n","login":"Asmod4n","count":1},{"name":"Daniel Morrison","email":"daniel@collectiveidea.com","login":"danielmorrison","count":1},{"name":"Gabe Bell","email":"christiangeek@gmail.com","login":"christiangeek","count":1},{"name":"Jun Aruga","email":"jaruga@redhat.com","login":"junaruga","count":1},{"name":"Kuba Suder","email":"jakub.suder@gmail.com","login":"mackuba","count":1},{"name":"Mark Young","email":"mark.w.young@keyloop.com","login":"mark-young-atg","count":1},{"name":"Matti Paksula","email":"matti","login":"matti","count":1},{"name":"Ryan Souza","email":"rydsouza@gmail.com","login":"ryansouza","count":1},{"name":"Sean Grove","email":"s@bushi.do","login":"sgrove","count":1},{"name":"Tiago","email":"cardoso_tiago@hotmail.com","login":"HoneyryderChuck","count":1},{"name":"izwick-schachter","email":"isaiah@developingtechnician.com","login":"isaiahzs","count":1},{"name":"pjaspers","email":"piet@happycamper.be","login":"pjaspers","count":1},{"name":"timcraft","email":"mail@timcraft.com","login":"timcraft","count":1}],"past_year_committers":[{"name":"James Coglan","email":"jcoglan@gmail.com","login":"jcoglan","count":5}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-13T00:00:12.063Z","repositories_count":6259216,"commits_count":882360415,"contributors_count":35081912,"owners_count":1166373,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"faye/websocket-driver-ruby","html_url":"https://github.com/faye/websocket-driver-ruby","last_synced_at":"2026-06-03T05:02:55.716Z","status":"error","issues_count":59,"pull_requests_count":39,"avg_time_to_close_issue":12482519.270833334,"avg_time_to_close_pull_request":5936312.166666667,"issues_closed_count":48,"pull_requests_closed_count":36,"pull_request_authors_count":30,"issue_authors_count":52,"avg_comments_per_issue":5.830508474576272,"avg_comments_per_pull_request":5.0,"merged_pull_requests_count":17,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":86763.0,"past_year_avg_time_to_close_pull_request":6338648.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":1.4,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-12T19:12:33.218Z","updated_at":"2026-06-03T05:02:55.716Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/faye%2Fwebsocket-driver-ruby/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":53,"CONTRIBUTOR":5,"COLLABORATOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":21,"NONE":18},"issue_authors":{"dblock":3,"paddor":3,"jeremyd":2,"shubhamjaincav":2,"HoneyryderChuck":2,"stakach":1,"joeytheman":1,"key88sf":1,"monorkin":1,"thuquynhpham":1,"Freecat7":1,"laphlaw":1,"tebayoso":1,"burner1024":1,"mkroman":1,"junaruga":1,"mattheworiordan":1,"renatosnrg":1,"thesecretmaster":1,"andrewpage":1,"Flipez":1,"dmvt":1,"net1957":1,"belgoros":1,"route":1,"matti":1,"miukki":1,"andyBobro":1,"bf4":1,"mensfeld":1,"soapergem":1,"Asmod4n":1,"bogdanRada":1,"jcoglan":1,"bd-maintainer":1,"rstacruz":1,"perlun":1,"bennesp":1,"GeneHFang":1,"bigsur0":1,"HongQiGong":1,"ioquatix":1,"digitalextremist":1,"houyuanjie":1,"lpil":1,"Adelaide22":1,"briri":1,"mrichie":1,"tmerrr":1,"espio999":1,"kdeberk":1,"jakemack":1},"pull_request_authors":{"ioquatix":5,"HoneyryderChuck":2,"mackuba":2,"mark-young-atg":2,"Asmod4n":2,"stevenwilliamson":2,"jeremyevans":1,"pvalena":1,"amatsuda":1,"pjaspers":1,"nbrookie":1,"vihai":1,"matti":1,"ryansouza":1,"ThisIsMissEm":1,"paddor":1,"jeremyd":1,"beatgammit":1,"digitalextremist":1,"twalpole":1,"knewter":1,"mataki":1,"thesecretmaster":1,"mattheworiordan":1,"danielmorrison":1,"junaruga":1,"kbarrette":1,"timcraft":1,"ssimeonov":1,"blakewest":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-07T00:00:19.841Z","repositories_count":14774480,"issues_count":33475019,"pull_requests_count":110185141,"authors_count":11294676,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"NONE":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"ThisIsMissEm":1},"maintainers":[{"login":"jcoglan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jcoglan"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":4,"ForkEvent":2,"IssuesEvent":3,"WatchEvent":5,"IssueCommentEvent":9,"PushEvent":8,"CreateEvent":2},"last_year":{"WatchEvent":2,"IssueCommentEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2024-06-17T16:30:46.657Z","updated_at":"2024-06-17T16:30:46.657Z","repository_link":"https://github.com/faye/websocket-driver-ruby/blob/main/.github/workflows/test.yml","dependencies":[{"id":18661775804,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":18661775805,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2024-06-17T16:30:47.000Z","updated_at":"2024-06-17T16:30:47.000Z","repository_link":"https://github.com/faye/websocket-driver-ruby/blob/main/Gemfile","dependencies":[]},{"ecosystem":"rubygems","filepath":"websocket-driver.gemspec","sha":null,"kind":"manifest","created_at":"2024-06-17T16:30:47.294Z","updated_at":"2024-06-17T16:30:47.294Z","repository_link":"https://github.com/faye/websocket-driver-ruby/blob/main/websocket-driver.gemspec","dependencies":[{"id":18661775846,"package_name":"websocket-extensions","ecosystem":"rubygems","requirements":"\u003e= 0.1.0","direct":true,"kind":"runtime","optional":false},{"id":18661775847,"package_name":"eventmachine","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":18661775848,"package_name":"permessage_deflate","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":18661775858,"package_name":"rake-compiler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":18661775859,"package_name":"rspec","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":18661775860,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003c 12.3.0","direct":true,"kind":"development","optional":false}]}],"score":30.303524052204853,"created_at":"2024-12-15T21:38:08.267Z","updated_at":"2026-06-16T00:01:27.352Z","avatar_url":"https://github.com/faye.png","language":"Ruby","monthly_downloads":0,"readme":"# websocket-driver\n\nThis module provides a complete implementation of the WebSocket protocols that\ncan be hooked up to any TCP library. It aims to simplify things by decoupling\nthe protocol details from the I/O layer, such that users only need to implement\ncode to stream data in and out of it without needing to know anything about how\nthe protocol actually works. Think of it as a complete WebSocket system with\npluggable I/O.\n\nDue to this design, you get a lot of things for free. In particular, if you hook\nthis module up to some I/O object, it will do all of this for you:\n\n- Select the correct server-side driver to talk to the client\n- Generate and send both server- and client-side handshakes\n- Recognize when the handshake phase completes and the WS protocol begins\n- Negotiate subprotocol selection based on `Sec-WebSocket-Protocol`\n- Negotiate and use extensions via the\n  [websocket-extensions](https://github.com/faye/websocket-extensions-ruby)\n  module\n- Buffer sent messages until the handshake process is finished\n- Deal with proxies that defer delivery of the draft-76 handshake body\n- Notify you when the socket is open and closed and when messages arrive\n- Recombine fragmented messages\n- Dispatch text, binary, ping, pong and close frames\n- Manage the socket-closing handshake process\n- Automatically reply to ping frames with a matching pong\n- Apply masking to messages sent by the client\n\nThis library was originally extracted from the [Faye](http://faye.jcoglan.com)\nproject but now aims to provide simple WebSocket support for any Ruby server or\nI/O system.\n\n\n## Installation\n\n```\n$ gem install websocket-driver\n```\n\n\n## Usage\n\nTo build either a server-side or client-side socket, the only requirement is\nthat you supply a `socket` object with these methods:\n\n- `socket.url` - returns the full URL of the socket as a string.\n- `socket.write(string)` - writes the given string to a TCP stream.\n\nServer-side sockets require one additional method:\n\n- `socket.env` - returns a Rack-style env hash that will contain some of the\n  following fields. Their values are strings containing the value of the named\n  header, unless stated otherwise.\n  * `HTTP_CONNECTION`\n  * `HTTP_HOST`\n  * `HTTP_ORIGIN`\n  * `HTTP_SEC_WEBSOCKET_EXTENSIONS`\n  * `HTTP_SEC_WEBSOCKET_KEY`\n  * `HTTP_SEC_WEBSOCKET_KEY1`\n  * `HTTP_SEC_WEBSOCKET_KEY2`\n  * `HTTP_SEC_WEBSOCKET_PROTOCOL`\n  * `HTTP_SEC_WEBSOCKET_VERSION`\n  * `HTTP_UPGRADE`\n  * `rack.input`, an `IO` object representing the request body\n  * `REQUEST_METHOD`, the request's HTTP verb\n\n\n### Server-side with Rack\n\nTo handle a server-side WebSocket connection, you need to check whether the\nrequest is a WebSocket handshake, and if so create a protocol driver for it.\nYou must give the driver an object with the `env`, `url` and `write` methods. A\nsimple example might be:\n\n```ruby\nrequire 'websocket/driver'\nrequire 'eventmachine'\n\nclass WS\n  attr_reader :env, :url\n\n  def initialize(env)\n    @env = env\n\n    secure = Rack::Request.new(env).ssl?\n    scheme = secure ? 'wss:' : 'ws:'\n    @url = scheme + '//' + env['HTTP_HOST'] + env['REQUEST_URI']\n\n    @driver = WebSocket::Driver.rack(self)\n\n    env['rack.hijack'].call\n    @io = env['rack.hijack_io']\n\n    EM.attach(@io, Reader) { |conn| conn.driver = @driver }\n\n    @driver.start\n  end\n\n  def write(string)\n    @io.write(string)\n  end\n\n  module Reader\n    attr_writer :driver\n\n    def receive_data(string)\n      @driver.parse(string)\n    end\n  end\nend\n```\n\nTo explain what's going on here: the `WS` class implements the `env`, `url` and\n`write(string)` methods as required. When instantiated with a Rack environment,\nit stores the environment and infers the complete URL from it.  Having set up\nthe `env` and `url`, it asks `WebSocket::Driver` for a server-side driver for\nthe socket. Then it uses the Rack hijack API to gain access to the TCP stream,\nand uses EventMachine to stream in incoming data from the client, handing\nincoming data off to the driver for parsing. Finally, we tell the driver to\n`start`, which will begin sending the handshake response.  This will invoke the\n`WS#write` method, which will send the response out over the TCP socket.\n\nHaving defined this class we could use it like this when handling a request:\n\n```ruby\nif WebSocket::Driver.websocket?(env)\n  socket = WS.new(env)\nend\n```\n\nThe driver API is described in full below.\n\n\n### Server-side with TCP\n\nYou can also handle WebSocket connections in a bare TCP server, if you're not\nusing Rack and don't want to implement HTTP parsing yourself. For this, your\nsocket object only needs a `write` method.\n\nThe driver will emit a `:connect` event when a request is received, and at this\npoint you can detect whether it's a WebSocket and handle it as such. Here's an\nexample using an EventMachine TCP server.\n\n```ruby\nmodule Connection\n  def initialize\n    @driver = WebSocket::Driver.server(self)\n\n    @driver.on :connect, -\u003e (event) do\n      if WebSocket::Driver.websocket?(@driver.env)\n        @driver.start\n      else\n        # handle other HTTP requests, for example\n        body = '\u003ch1\u003ehello\u003c/h1\u003e'\n        response = [\n          'HTTP/1.1 200 OK',\n          'Content-Type: text/plain',\n          \"Content-Length: #{body.bytesize}\",\n          '',\n          body\n        ]\n        send_data response.join(\"\\r\\n\")\n      end\n    end\n\n    @driver.on :message, -\u003e (e) { @driver.text(e.data) }\n    @driver.on :close,   -\u003e (e) { close_connection_after_writing }\n  end\n\n  def receive_data(data)\n    @driver.parse(data)\n  end\n\n  def write(data)\n    send_data(data)\n  end\nend\n\nEM.run {\n  EM.start_server('127.0.0.1', 4180, Connection)\n}\n```\n\nIn the `:connect` event, `@driver.env` is a Rack env representing the request.\nIf the request has a body, it will be in the `@driver.env['rack.input']` stream,\nbut only as much of the body as you have so far routed to it using the `parse`\nmethod.\n\n\n### Client-side\n\nSimilarly, to implement a WebSocket client you need an object with `url` and\n`write` methods. Once you have one such object, you ask for a driver for it:\n\n```ruby\ndriver = WebSocket::Driver.client(socket)\n```\n\nAfter this you use the driver API as described below to process incoming data\nand send outgoing data.\n\nClient drivers have two additional methods for reading the HTTP data that was\nsent back by the server:\n\n- `driver.status` - the integer value of the HTTP status code\n- `driver.headers` - a hash-like object containing the response headers\n\n\n### HTTP Proxies\n\nThe client driver supports connections via HTTP proxies using the `CONNECT`\nmethod. Instead of sending the WebSocket handshake immediately, it will send a\n`CONNECT` request, wait for a `200` response, and then proceed as normal.\n\nTo use this feature, call `proxy = driver.proxy(url)` where `url` is the origin\nof the proxy, including a username and password if required. This produces an\nobject that manages the process of connecting via the proxy. You should call\n`proxy.start` to begin the connection process, and pass data you receive via the\nsocket to `proxy.parse(data)`. When the proxy emits `:connect`, you should then\nstart sending incoming data to `driver.parse(data)` as normal, and call\n`driver.start`.\n\n```rb\nproxy = driver.proxy('http://username:password@proxy.example.com')\n\nproxy.on :connect, -\u003e (event) do\n  driver.start\nend\n```\n\nThe proxy's `:connect` event is also where you should perform a TLS handshake on\nyour TCP stream, if you are connecting to a `wss:` endpoint.\n\nIn the event that proxy connection fails, `proxy` will emit an `:error`. You can\ninspect the proxy's response via `proxy.status` and `proxy.headers`.\n\n```rb\nproxy.on :error, -\u003e (error) do\n  puts error.message\n  puts proxy.status\n  puts proxy.headers.inspect\nend\n```\n\nBefore calling `proxy.start` you can set custom headers using\n`proxy.set_header`:\n\n```rb\nproxy.set_header('User-Agent', 'ruby')\nproxy.start\n```\n\n\n### Driver API\n\nDrivers are created using one of the following methods:\n\n```ruby\ndriver = WebSocket::Driver.rack(socket, options)\ndriver = WebSocket::Driver.server(socket, options)\ndriver = WebSocket::Driver.client(socket, options)\n```\n\nThe `rack` method returns a driver chosen using the socket's `env`. The `server`\nmethod returns a driver that will parse an HTTP request and then decide which\ndriver to use for it using the `rack` method. The `client` method always returns\na driver for the RFC version of the protocol with masking enabled on outgoing\nframes.\n\nThe `options` argument is optional, and is a hash. It may contain the following\nkeys:\n\n- `:max_length` - the maximum allowed size of incoming message frames, in bytes.\n  The default value is `2^26 - 1`, or 1 byte short of 64 MiB.\n- `:protocols` - an array of strings representing acceptable subprotocols for\n  use over the socket. The driver will negotiate one of these to use via the\n  `Sec-WebSocket-Protocol` header if supported by the other peer.\n- `:binary_data_format` - in older versions of this library, binary messages\n  were represented as arrays of bytes, whereas they're now represented as\n  strings with `Encoding::BINARY` for performance reasons. Set this option to\n  `:array` to restore the old behaviour.\n\nAll drivers respond to the following API methods, but some of them are no-ops\ndepending on whether the client supports the behaviour.\n\nNote that most of these methods are commands: if they produce data that should\nbe sent over the socket, they will give this to you by calling\n`socket.write(string)`.\n\n#### `driver.on :open, -\u003e (event) {}`\n\nAdds a callback block to execute when the socket becomes open.\n\n#### `driver.on :message, -\u003e (event) {}`\n\nAdds a callback block to execute when a message is received. `event` will have a\n`data` attribute whose value is a string with the encoding `Encoding::UTF_8` for\ntext message, and `Encoding::BINARY` for binary message.\n\n#### `driver.on :error, -\u003e (event) {}`\n\nAdds a callback to execute when a protocol error occurs due to the other peer\nsending an invalid byte sequence. `event` will have a `message` attribute\ndescribing the error.\n\n#### `driver.on :close, -\u003e (event) {}`\n\nAdds a callback block to execute when the socket becomes closed. The `event`\nobject has `code` and `reason` attributes.\n\n#### `driver.on :ping, -\u003e (event) {}`\n\nAdds a callback block to execute when a ping is received. You do not need to\nhandle this by sending a pong frame yourself; the driver handles this for you.\n\n#### `driver.on :pong, -\u003e (event) {}`\n\nAdds a callback block to execute when a pong is received. If this was in\nresponse to a ping you sent, you can also handle this event via the\n`driver.ping(message) { ... }` callback.\n\n#### `driver.add_extension(extension)`\n\nRegisters a protocol extension whose operation will be negotiated via the\n`Sec-WebSocket-Extensions` header. `extension` is any extension compatible with\nthe [websocket-extensions](https://github.com/faye/websocket-extensions-ruby)\nframework.\n\n#### `driver.set_header(name, value)`\n\nSets a custom header to be sent as part of the handshake response, either from\nthe server or from the client. Must be called before `start`, since this is when\nthe headers are serialized and sent.\n\n#### `driver.start`\n\nInitiates the protocol by sending the handshake - either the response for a\nserver-side driver or the request for a client-side one. This should be the\nfirst method you invoke.  Returns `true` if and only if a handshake was sent.\n\n#### `driver.parse(string)`\n\nTakes a string and parses it, potentially resulting in message events being\nemitted (see `on('message')` above) or in data being sent to `socket.write`.\nYou should send all data you receive via I/O to this method.\n\n#### `driver.text(string)`\n\nSends a text message over the socket. If the socket handshake is not yet\ncomplete, the message will be queued until it is. Returns `true` if the message\nwas sent or queued, and `false` if the socket can no longer send messages.\n\n#### `driver.binary(buffer)`\n\nTakes either a string with encoding `Encoding::BINARY`, or an array of\nbyte-sized integers, and sends it as a binary message. Will queue and return\n`true` or `false` the same way as the `text` method. It will also return `false`\nif the driver does not support binary messages.\n\n#### `driver.ping(string = '', \u0026callback)`\n\nSends a ping frame over the socket, queueing it if necessary. `string` and the\n`callback` block are both optional. If a callback is given, it will be invoked\nwhen the socket receives a pong frame whose content matches `string`. Returns\n`false` if frames can no longer be sent, or if the driver does not support\nping/pong.\n\n#### `driver.pong(string = '')`\n\nSends a pong frame over the socket, queueing it if necessary. `string` is\noptional. Returns `false` if frames can no longer be sent, or if the driver does\nnot support ping/pong.\n\nYou don't need to call this when a ping frame is received; pings are replied to\nautomatically by the driver. This method is for sending unsolicited pongs.\n\n#### `driver.close`\n\nInitiates the closing handshake if the socket is still open. For drivers with no\nclosing handshake, this will result in the immediate execution of the\n`on('close')` callback. For drivers with a closing handshake, this sends a\nclosing frame and `emit('close')` will execute when a response is received or a\nprotocol error occurs.\n\n#### `driver.version`\n\nReturns the WebSocket version in use as a string. Will either be `hixie-75`,\n`hixie-76` or `hybi-$version`.\n\n#### `driver.protocol`\n\nReturns a string containing the selected subprotocol, if any was agreed upon\nusing the `Sec-WebSocket-Protocol` mechanism. This value becomes available after\n`emit('open')` has fired.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activejob","activerecord","mvc","rubygems","rack","sinatra","documentation-tool","multithreading","repl","ruby-gem"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/529","html_url":"https://ruby.ecosyste.ms/projects/529"}