{"id":354,"name":null,"description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","url":"https://github.com/aetherknight/recursive-open-struct","last_synced_at":"2026-05-01T04:32:11.088Z","repository":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2026-04-19T00:49:26.000Z","size":249,"stargazers_count":289,"open_issues_count":4,"forks_count":54,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-04-26T02:11:14.366Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2026-04-19T00:49:28.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32454170,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","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":{"login":"aetherknight","name":"William (B.J.) Snow Orvis","uuid":"62613","kind":"user","description":null,"email":"","website":"https://www.aedifice.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62613?u=d3e4348cb1d930cbe7c622d67055e396597131a5\u0026v=4","repositories_count":20,"last_synced_at":"2023-04-10T12:01:28.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/aetherknight","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:45:26.679Z","updated_at":"2023-04-10T12:01:28.351Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight/repositories"},"packages":[{"id":284621,"name":"recursive-open-struct","ecosystem":"rubygems","description":"RecursiveOpenStruct is a subclass of OpenStruct. It differs from\nOpenStruct in that it allows nested hashes to be treated in a recursive\nfashion. For example:\n\n    ros = RecursiveOpenStruct.new({ :a =\u003e { :b =\u003e 'c' } })\n    ros.a.b # 'c'\n\nAlso, nested hashes can still be accessed as hashes:\n\n    ros.a_as_a_hash # { :b =\u003e 'c' }\n","homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":[],"namespace":null,"versions_count":34,"first_release_published_at":"2011-05-20T10:40:20.384Z","latest_release_published_at":"2026-04-19T00:49:47.031Z","latest_release_number":"2.1.1","last_synced_at":"2026-04-19T17:01:08.332Z","created_at":"2022-04-06T08:46:14.316Z","updated_at":"2026-04-19T17:01:08.332Z","registry_url":"https://rubygems.org/gems/recursive-open-struct","install_command":"gem install recursive-open-struct -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/recursive-open-struct/","metadata":{"funding":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2024-10-04T05:53:40.000Z","size":189,"stargazers_count":285,"open_issues_count":4,"forks_count":54,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-10-29T13:01:13.622Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2024-10-25T13:21:16.000Z","dependencies_parsed_at":"2024-06-02T21:26:56.707Z","dependency_job_id":"31735671-f1f1-41b3-ab92-4bb8584a7c96","html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":172,"total_committers":23,"mean_commits":7.478260869565218,"dds":"0.33720930232558144","last_synced_commit":"da387093003364e6d9eb9600f9e43d5a25a17be4"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222074963,"owners_count":16926640,"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":"aetherknight","name":"William (B.J.) Snow Orvis","uuid":"62613","kind":"user","description":null,"email":"","website":"https://www.aedifice.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62613?u=d3e4348cb1d930cbe7c622d67055e396597131a5\u0026v=4","repositories_count":20,"last_synced_at":"2023-04-10T12:01:28.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/aetherknight","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:45:26.679Z","updated_at":"2023-04-10T12:01:28.351Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight/repositories"},"tags":[{"name":"v2.0.0","sha":"d26b6e88135ec54e44a0b4efd48743469f242b7a","kind":"tag","published_at":"2024-10-04T05:53:36.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0/manifests"},{"name":"v1.3.1","sha":"cc1adb47a2d3b550e67f76113e5641a3edb62892","kind":"tag","published_at":"2024-10-04T05:50:31.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"3f526d51dad6f79aae2ba7ea410a8e599822a602","kind":"tag","published_at":"2024-10-02T06:40:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0/manifests"},{"name":"v1.2.2","sha":"3bb03300317fa0e5303e53f82881f6f3c74f6bad","kind":"tag","published_at":"2024-06-19T02:51:34.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"280d4eb58bfc425059790a4375c70a31ba13268c","kind":"tag","published_at":"2024-05-28T04:56:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"ae188cc947d5df7ffa05ea4372139e27796dde3e","kind":"commit","published_at":"2024-05-28T04:47:35.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"0f1a2f711cc33b65e4e72f76382f53c8ce040db0","kind":"commit","published_at":"2020-10-16T06:13:52.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"f9a66a88590d8e3d323ab758d3f12a0ff1ee5d0f","kind":"commit","published_at":"2020-06-21T03:38:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"ac06eb8b39b96cdcb583488a16f0fb8b66e5c93f","kind":"commit","published_at":"2020-03-11T06:31:11.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"244fa1035c9f248a44bccf97c89184c48dd6c72b","kind":"tag","published_at":"2018-02-03T20:31:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0/manifests"},{"name":"v1.0.5","sha":"cf0d4f08c307b30534fe56efb85e90617440adf7","kind":"commit","published_at":"2017-06-22T05:46:37.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"938a91fd344c64656e1fca0442488011d4646683","kind":"tag","published_at":"2017-04-29T15:46:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"2edb1589bd3c0e506f6b18db17f30bf46c78a60e","kind":"tag","published_at":"2017-04-10T17:16:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"e708bba6cb19c076f845a6c0b43db438415cbac3","kind":"tag","published_at":"2016-12-19T23:53:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"e13bd316189c3965b4f68336880ea5e7743b8248","kind":"commit","published_at":"2016-01-18T18:36:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"bd44ec5a0f144774930585a7b5b4b848b781787c","kind":"tag","published_at":"2015-12-12T08:08:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0/manifests"},{"name":"v0.6.5","sha":"e9fc371636ee40806149d2df76089aae2890cf2b","kind":"commit","published_at":"2015-07-01T04:08:59.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5/manifests"},{"name":"v0.6.4","sha":"084ec9a2768d222cf67c49573f664473cba26bc0","kind":"commit","published_at":"2015-05-21T05:08:13.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4/manifests"},{"name":"v0.6.3","sha":"7b0b8b480f6433fb9318fe2bca09ca0f064684f5","kind":"commit","published_at":"2015-04-11T19:25:20.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"d77c5d7d1a6cdf95d74e4f1d128799c0749a4914","kind":"commit","published_at":"2015-04-08T03:23:28.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"c3d28f39f09a234461a0d91f059067c23a18ec08","kind":"commit","published_at":"2015-03-28T22:39:03.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"e4b0ae94e416d70f8137b82916582002a957308c","kind":"commit","published_at":"2015-03-28T20:36:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"5a1e179d86319406063756e244d138918d7508b8","kind":"commit","published_at":"2014-06-14T18:24:53.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.5.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0/manifests"},{"name":"v0.4.5","sha":"0513869b62601e767379d6434742786efa247d18","kind":"tag","published_at":"2013-10-24T02:55:54.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"2a750ed990c5fa952b619f89e883a621b45f202f","kind":"commit","published_at":"2013-08-28T15:06:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"dd02b49ba779e3f46fecea6083f1516b580be0c7","kind":"tag","published_at":"2013-05-31T05:51:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4f0778bd3560db70f7250bd72b38df28ade2af62","kind":"tag","published_at":"2013-05-30T04:26:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"85ef6eb8bfc6907eabbd414ab1a8b0f91315009b","kind":"tag","published_at":"2013-05-29T04:04:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"bbbad0594339a3c1ca230915914ffa51f241df63","kind":"tag","published_at":"2013-05-26T22:19:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"3338726cae0dff81c831bbb75fe5215c79dd12f3","kind":"commit","published_at":"2012-10-24T04:23:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"4970a39eb9e9d61f3f8903022c66e27caf9015aa","kind":"commit","published_at":"2012-10-24T03:44:07.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0/manifests"},{"name":"v0.2.1","sha":"e8452e74c108b9944327db3d853af9df4a4a7fec","kind":"commit","published_at":"2011-05-31T13:57:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"71993dfe723879a44fec7f9e2c87959bb1d32661","kind":"commit","published_at":"2011-05-25T15:45:55.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"445d065720eaa35358fda4f8233d909ed11d2fb3","kind":"commit","published_at":"2010-01-12T19:21:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2024-11-11T22:13:53.451Z","dependent_packages_count":151,"downloads":68496168,"downloads_period":"total","dependent_repos_count":1799,"rankings":{"downloads":0.4465828882371963,"dependent_repos_count":0.73538430659783,"dependent_packages_count":0.2274729318361749,"stargazers_count":3.4851306296762976,"forks_count":3.655177796857751,"docker_downloads_count":0.08697494452559629,"average":1.4394539162884745},"purl":"pkg:gem/recursive-open-struct","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/recursive-open-struct","docker_dependents_count":435,"docker_downloads_count":1488865852,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2024-11-11T22:03:51.023Z","issues_count":74,"pull_requests_count":65,"avg_time_to_close_issue":9919175.818181818,"avg_time_to_close_pull_request":10646260.0,"issues_closed_count":66,"pull_requests_closed_count":65,"pull_request_authors_count":34,"issue_authors_count":33,"avg_comments_per_issue":3.0405405405405403,"avg_comments_per_pull_request":2.5538461538461537,"merged_pull_requests_count":45,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":52817.0,"past_year_avg_time_to_close_pull_request":1781724.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":3.0,"past_year_avg_comments_per_pull_request":2.0,"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/aetherknight%2Frecursive-open-struct/issues","maintainers":[{"login":"aetherknight","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct/codemeta","maintainers":[{"uuid":"50395","login":"Offirmo","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://rubygems.org/profiles/Offirmo","role":null,"created_at":"2022-11-09T09:47:39.898Z","updated_at":"2022-11-09T09:47:39.898Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/Offirmo/packages"},{"uuid":"2368","login":"aetherknight","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://rubygems.org/profiles/aetherknight","role":null,"created_at":"2022-11-09T09:47:39.915Z","updated_at":"2022-11-09T09:47:39.915Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/aetherknight/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205267,"maintainers_count":68387,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","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":13606011,"name":"ruby-recursive-open-struct","ecosystem":"debian","description":null,"homepage":"http://github.com/aetherknight/recursive-open-struct","licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:26:19.426Z","latest_release_published_at":"2026-02-11T11:26:19.426Z","latest_release_number":"1.1.0-1","last_synced_at":"2026-03-13T19:06:11.571Z","created_at":"2026-02-11T11:26:19.212Z","updated_at":"2026-03-13T19:06:11.571Z","registry_url":"https://tracker.debian.org/pkg/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":"https://packages.debian.org/buster/ruby-recursive-open-struct","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.1.3","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 11~), gem2deb, rake, ruby-rspec, pry","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2025-12-05T07:02:55.000Z","size":201,"stargazers_count":290,"open_issues_count":4,"forks_count":54,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-01-30T23:04:39.877Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2025-12-05T07:02:54.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29194394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T12:38:28.597Z","status":"ssl_error","status_checked_at":"2026-02-07T12:38:23.888Z","response_time":63,"last_error":"SSL_read: 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-02-11T15:15:20.528Z","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-recursive-open-struct?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-recursive-open-struct/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","funded_packages_count":80},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-04-14T05:07:28.009Z","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":13805146,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":"other","normalized_licenses":["Other"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:31:19.394Z","latest_release_published_at":"2026-02-13T18:31:19.394Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-13T19:24:42.673Z","created_at":"2026-02-13T18:31:19.199Z","updated_at":"2026-03-13T19:24:42.674Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2025-12-05T07:02:55.000Z","size":201,"stargazers_count":290,"open_issues_count":4,"forks_count":54,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-01-30T23:04:39.877Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2025-12-05T07:02:54.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29194394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T12:38:28.597Z","status":"ssl_error","status_checked_at":"2026-02-07T12:38:23.888Z","response_time":63,"last_error":"SSL_read: 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-02-13T18:31:19.614Z","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":1.6893182686534578,"forks_count":1.5665083783636264,"docker_downloads_count":null,"average":0.8139566617542711},"purl":"pkg:deb/ubuntu/ruby-recursive-open-struct?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-recursive-open-struct/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","funded_packages_count":412},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-01T06:53:18.736Z","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":13751628,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"http://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:21:34.061Z","latest_release_published_at":"2026-02-13T07:21:34.061Z","latest_release_number":"1.1.0-2","last_synced_at":"2026-03-13T14:24:55.617Z","created_at":"2026-02-13T07:21:33.894Z","updated_at":"2026-03-13T14:24:55.617Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","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, rake, ruby-rspec, pry","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T07:21:34.752Z","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-recursive-open-struct?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-recursive-open-struct/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","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-01T06:53:15.590Z","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":13567054,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:48:18.603Z","latest_release_published_at":"2026-02-11T06:48:18.603Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-11T19:18:29.230Z","created_at":"2026-02-11T06:48:18.440Z","updated_at":"2026-03-11T19:18:29.230Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:57:12.196Z","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-recursive-open-struct?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-recursive-open-struct/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","funded_packages_count":99},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-01T06:53:19.375Z","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":13467156,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:09:13.158Z","latest_release_published_at":"2026-02-09T17:09:13.158Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-09T18:22:14.849Z","created_at":"2026-02-09T17:09:05.010Z","updated_at":"2026-03-09T19:02:28.757Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","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-recursive-open-struct?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-recursive-open-struct/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","funded_packages_count":177},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-03-31T06:41:18.525Z","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":13530883,"name":"ruby-recursive-open-struct","ecosystem":"debian","description":null,"homepage":"http://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:37:35.121Z","latest_release_published_at":"2026-02-10T23:37:35.121Z","latest_release_number":"1.1.1-1","last_synced_at":"2026-03-14T07:17:55.096Z","created_at":"2026-02-10T23:37:34.890Z","updated_at":"2026-03-14T07:17:55.097Z","registry_url":"https://tracker.debian.org/pkg/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":"https://packages.debian.org/bullseye/ruby-recursive-open-struct","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","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, rake, ruby-rspec, pry","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-11T14:26:55.529Z","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-recursive-open-struct?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-recursive-open-struct/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","funded_packages_count":77},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-01T06:53:20.333Z","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":12307104,"name":"recursive-open-struct-sd","ecosystem":"rubygems","description":"RecursiveOpenStruct is a subclass of OpenStruct. It differs from\nOpenStruct in that it allows nested hashes to be treated in a recursive\nfashion. For example:\n\n    ros = RecursiveOpenStruct.new({ :a =\u0026gt; { :b =\u0026gt; 'c' } })\n    ros.a.b # 'c'\n\nAlso, nested hashes can still be accessed as hashes:\n\n    ros.a_as_a_hash # { :b =\u0026gt; 'c' }\n\n\u0026gt; This is a fork of the original recursive-open-struct\n\u0026gt; to include a fix for https://github.com/aetherknight/recursive-open-struct/issues/46\n","homepage":"http://github.com/aetherknight/recursive-open-struct","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2016-10-05T14:47:36.048Z","latest_release_published_at":"2016-10-05T14:47:36.048Z","latest_release_number":"1.0.2","last_synced_at":"2026-04-17T22:01:48.270Z","created_at":"2025-10-07T05:22:01.459Z","updated_at":"2026-04-17T22:09:39.486Z","registry_url":"https://gem.coop/gems/recursive-open-struct-sd","install_command":"gem install recursive-open-struct-sd -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/recursive-open-struct-sd/","metadata":{"funding":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2026-04-03T00:46:04.000Z","size":205,"stargazers_count":289,"open_issues_count":6,"forks_count":55,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-04-13T20:03:16.849Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2026-04-12T07:51:37.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31821686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: 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"},"owner_record":{"login":"aetherknight","name":"William (B.J.) Snow Orvis","uuid":"62613","kind":"user","description":null,"email":"","website":"https://www.aedifice.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62613?u=d3e4348cb1d930cbe7c622d67055e396597131a5\u0026v=4","repositories_count":20,"last_synced_at":"2023-04-10T12:01:28.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/aetherknight","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:45:26.679Z","updated_at":"2023-04-10T12:01:28.351Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight/repositories"},"tags":[{"name":"v2.1.0","sha":"cd0f855f123509d24f401992278b6c90c395acf5","kind":"commit","published_at":"2025-12-05T07:02:40.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"d26b6e88135ec54e44a0b4efd48743469f242b7a","kind":"tag","published_at":"2024-10-04T05:53:36.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0/manifests"},{"name":"v1.3.1","sha":"cc1adb47a2d3b550e67f76113e5641a3edb62892","kind":"tag","published_at":"2024-10-04T05:50:31.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"3f526d51dad6f79aae2ba7ea410a8e599822a602","kind":"tag","published_at":"2024-10-02T06:40:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0/manifests"},{"name":"v1.2.2","sha":"3bb03300317fa0e5303e53f82881f6f3c74f6bad","kind":"tag","published_at":"2024-06-19T02:51:34.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"280d4eb58bfc425059790a4375c70a31ba13268c","kind":"tag","published_at":"2024-05-28T04:56:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"ae188cc947d5df7ffa05ea4372139e27796dde3e","kind":"commit","published_at":"2024-05-28T04:47:35.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"0f1a2f711cc33b65e4e72f76382f53c8ce040db0","kind":"commit","published_at":"2020-10-16T06:13:52.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"f9a66a88590d8e3d323ab758d3f12a0ff1ee5d0f","kind":"commit","published_at":"2020-06-21T03:38:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"ac06eb8b39b96cdcb583488a16f0fb8b66e5c93f","kind":"commit","published_at":"2020-03-11T06:31:11.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"244fa1035c9f248a44bccf97c89184c48dd6c72b","kind":"tag","published_at":"2018-02-03T20:31:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0/manifests"},{"name":"v1.0.5","sha":"cf0d4f08c307b30534fe56efb85e90617440adf7","kind":"commit","published_at":"2017-06-22T05:46:37.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"938a91fd344c64656e1fca0442488011d4646683","kind":"tag","published_at":"2017-04-29T15:46:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"2edb1589bd3c0e506f6b18db17f30bf46c78a60e","kind":"tag","published_at":"2017-04-10T17:16:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"e708bba6cb19c076f845a6c0b43db438415cbac3","kind":"tag","published_at":"2016-12-19T23:53:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"e13bd316189c3965b4f68336880ea5e7743b8248","kind":"commit","published_at":"2016-01-18T18:36:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"bd44ec5a0f144774930585a7b5b4b848b781787c","kind":"tag","published_at":"2015-12-12T08:08:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0/manifests"},{"name":"v0.6.5","sha":"e9fc371636ee40806149d2df76089aae2890cf2b","kind":"commit","published_at":"2015-07-01T04:08:59.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5/manifests"},{"name":"v0.6.4","sha":"084ec9a2768d222cf67c49573f664473cba26bc0","kind":"commit","published_at":"2015-05-21T05:08:13.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4/manifests"},{"name":"v0.6.3","sha":"7b0b8b480f6433fb9318fe2bca09ca0f064684f5","kind":"commit","published_at":"2015-04-11T19:25:20.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"d77c5d7d1a6cdf95d74e4f1d128799c0749a4914","kind":"commit","published_at":"2015-04-08T03:23:28.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"c3d28f39f09a234461a0d91f059067c23a18ec08","kind":"commit","published_at":"2015-03-28T22:39:03.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"e4b0ae94e416d70f8137b82916582002a957308c","kind":"commit","published_at":"2015-03-28T20:36:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"5a1e179d86319406063756e244d138918d7508b8","kind":"commit","published_at":"2014-06-14T18:24:53.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.5.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0/manifests"},{"name":"v0.4.5","sha":"0513869b62601e767379d6434742786efa247d18","kind":"tag","published_at":"2013-10-24T02:55:54.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"2a750ed990c5fa952b619f89e883a621b45f202f","kind":"commit","published_at":"2013-08-28T15:06:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"dd02b49ba779e3f46fecea6083f1516b580be0c7","kind":"tag","published_at":"2013-05-31T05:51:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4f0778bd3560db70f7250bd72b38df28ade2af62","kind":"tag","published_at":"2013-05-30T04:26:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"85ef6eb8bfc6907eabbd414ab1a8b0f91315009b","kind":"tag","published_at":"2013-05-29T04:04:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"bbbad0594339a3c1ca230915914ffa51f241df63","kind":"tag","published_at":"2013-05-26T22:19:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"3338726cae0dff81c831bbb75fe5215c79dd12f3","kind":"commit","published_at":"2012-10-24T04:23:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"4970a39eb9e9d61f3f8903022c66e27caf9015aa","kind":"commit","published_at":"2012-10-24T03:44:07.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0/manifests"},{"name":"v0.2.1","sha":"e8452e74c108b9944327db3d853af9df4a4a7fec","kind":"commit","published_at":"2011-05-31T13:57:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"71993dfe723879a44fec7f9e2c87959bb1d32661","kind":"commit","published_at":"2011-05-25T15:45:55.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"445d065720eaa35358fda4f8233d909ed11d2fb3","kind":"commit","published_at":"2010-01-12T19:21:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-17T22:09:39.486Z","dependent_packages_count":0,"downloads":3404,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":85.23671006531424,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":28.41223668843808},"purl":"pkg:gem/recursive-open-struct-sd?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/recursive-open-struct-sd","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/recursive-open-struct-sd","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/recursive-open-struct-sd/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-16T22:00:50.391Z","issues_count":41,"pull_requests_count":44,"avg_time_to_close_issue":8861354.333333334,"avg_time_to_close_pull_request":11155083.268292682,"issues_closed_count":36,"pull_requests_closed_count":41,"pull_request_authors_count":36,"issue_authors_count":33,"avg_comments_per_issue":2.8780487804878048,"avg_comments_per_pull_request":2.659090909090909,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":90403.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":3.3333333333333335,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/issues","maintainers":[{"login":"aetherknight","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}],"active_maintainers":[{"login":"aetherknight","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct-sd/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct-sd/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct-sd/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct-sd/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct-sd/codemeta","maintainers":[{"uuid":"48293","login":"thaold","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://gem.coop/profiles/thaold","role":null,"created_at":"2025-10-08T04:10:55.497Z","updated_at":"2025-10-08T04:10:55.497Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/thaold/packages"},{"uuid":"82429","login":"bithavoc","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://gem.coop/profiles/bithavoc","role":null,"created_at":"2025-10-08T04:10:55.155Z","updated_at":"2025-10-08T04:10:55.155Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/bithavoc/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190118,"maintainers_count":67397,"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":284622,"name":"recursive-open-struct-sd","ecosystem":"rubygems","description":"RecursiveOpenStruct is a subclass of OpenStruct. It differs from\nOpenStruct in that it allows nested hashes to be treated in a recursive\nfashion. For example:\n\n    ros = RecursiveOpenStruct.new({ :a =\u0026gt; { :b =\u0026gt; 'c' } })\n    ros.a.b # 'c'\n\nAlso, nested hashes can still be accessed as hashes:\n\n    ros.a_as_a_hash # { :b =\u0026gt; 'c' }\n\n\u0026gt; This is a fork of the original recursive-open-struct\n\u0026gt; to include a fix for https://github.com/aetherknight/recursive-open-struct/issues/46\n","homepage":"http://github.com/aetherknight/recursive-open-struct","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2016-10-05T14:47:36.048Z","latest_release_published_at":"2016-10-05T14:47:36.048Z","latest_release_number":"1.0.2","last_synced_at":"2026-04-17T22:01:56.369Z","created_at":"2022-04-06T08:46:15.092Z","updated_at":"2026-04-17T22:09:43.210Z","registry_url":"https://rubygems.org/gems/recursive-open-struct-sd","install_command":"gem install recursive-open-struct-sd -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/recursive-open-struct-sd/","metadata":{"funding":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2026-04-03T00:46:04.000Z","size":205,"stargazers_count":289,"open_issues_count":6,"forks_count":55,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-04-13T20:03:16.849Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2026-04-12T07:51:37.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31821686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: 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"},"owner_record":{"login":"aetherknight","name":"William (B.J.) Snow Orvis","uuid":"62613","kind":"user","description":null,"email":"","website":"https://www.aedifice.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62613?u=d3e4348cb1d930cbe7c622d67055e396597131a5\u0026v=4","repositories_count":20,"last_synced_at":"2023-04-10T12:01:28.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/aetherknight","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:45:26.679Z","updated_at":"2023-04-10T12:01:28.351Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight/repositories"},"tags":[{"name":"v2.1.0","sha":"cd0f855f123509d24f401992278b6c90c395acf5","kind":"commit","published_at":"2025-12-05T07:02:40.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"d26b6e88135ec54e44a0b4efd48743469f242b7a","kind":"tag","published_at":"2024-10-04T05:53:36.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0/manifests"},{"name":"v1.3.1","sha":"cc1adb47a2d3b550e67f76113e5641a3edb62892","kind":"tag","published_at":"2024-10-04T05:50:31.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"3f526d51dad6f79aae2ba7ea410a8e599822a602","kind":"tag","published_at":"2024-10-02T06:40:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0/manifests"},{"name":"v1.2.2","sha":"3bb03300317fa0e5303e53f82881f6f3c74f6bad","kind":"tag","published_at":"2024-06-19T02:51:34.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"280d4eb58bfc425059790a4375c70a31ba13268c","kind":"tag","published_at":"2024-05-28T04:56:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"ae188cc947d5df7ffa05ea4372139e27796dde3e","kind":"commit","published_at":"2024-05-28T04:47:35.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"0f1a2f711cc33b65e4e72f76382f53c8ce040db0","kind":"commit","published_at":"2020-10-16T06:13:52.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"f9a66a88590d8e3d323ab758d3f12a0ff1ee5d0f","kind":"commit","published_at":"2020-06-21T03:38:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"ac06eb8b39b96cdcb583488a16f0fb8b66e5c93f","kind":"commit","published_at":"2020-03-11T06:31:11.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"244fa1035c9f248a44bccf97c89184c48dd6c72b","kind":"tag","published_at":"2018-02-03T20:31:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0/manifests"},{"name":"v1.0.5","sha":"cf0d4f08c307b30534fe56efb85e90617440adf7","kind":"commit","published_at":"2017-06-22T05:46:37.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"938a91fd344c64656e1fca0442488011d4646683","kind":"tag","published_at":"2017-04-29T15:46:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"2edb1589bd3c0e506f6b18db17f30bf46c78a60e","kind":"tag","published_at":"2017-04-10T17:16:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"e708bba6cb19c076f845a6c0b43db438415cbac3","kind":"tag","published_at":"2016-12-19T23:53:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"e13bd316189c3965b4f68336880ea5e7743b8248","kind":"commit","published_at":"2016-01-18T18:36:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"bd44ec5a0f144774930585a7b5b4b848b781787c","kind":"tag","published_at":"2015-12-12T08:08:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0/manifests"},{"name":"v0.6.5","sha":"e9fc371636ee40806149d2df76089aae2890cf2b","kind":"commit","published_at":"2015-07-01T04:08:59.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5/manifests"},{"name":"v0.6.4","sha":"084ec9a2768d222cf67c49573f664473cba26bc0","kind":"commit","published_at":"2015-05-21T05:08:13.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4/manifests"},{"name":"v0.6.3","sha":"7b0b8b480f6433fb9318fe2bca09ca0f064684f5","kind":"commit","published_at":"2015-04-11T19:25:20.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"d77c5d7d1a6cdf95d74e4f1d128799c0749a4914","kind":"commit","published_at":"2015-04-08T03:23:28.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"c3d28f39f09a234461a0d91f059067c23a18ec08","kind":"commit","published_at":"2015-03-28T22:39:03.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"e4b0ae94e416d70f8137b82916582002a957308c","kind":"commit","published_at":"2015-03-28T20:36:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"5a1e179d86319406063756e244d138918d7508b8","kind":"commit","published_at":"2014-06-14T18:24:53.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.5.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0/manifests"},{"name":"v0.4.5","sha":"0513869b62601e767379d6434742786efa247d18","kind":"tag","published_at":"2013-10-24T02:55:54.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"2a750ed990c5fa952b619f89e883a621b45f202f","kind":"commit","published_at":"2013-08-28T15:06:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"dd02b49ba779e3f46fecea6083f1516b580be0c7","kind":"tag","published_at":"2013-05-31T05:51:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4f0778bd3560db70f7250bd72b38df28ade2af62","kind":"tag","published_at":"2013-05-30T04:26:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"85ef6eb8bfc6907eabbd414ab1a8b0f91315009b","kind":"tag","published_at":"2013-05-29T04:04:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"bbbad0594339a3c1ca230915914ffa51f241df63","kind":"tag","published_at":"2013-05-26T22:19:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"3338726cae0dff81c831bbb75fe5215c79dd12f3","kind":"commit","published_at":"2012-10-24T04:23:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"4970a39eb9e9d61f3f8903022c66e27caf9015aa","kind":"commit","published_at":"2012-10-24T03:44:07.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0/manifests"},{"name":"v0.2.1","sha":"e8452e74c108b9944327db3d853af9df4a4a7fec","kind":"commit","published_at":"2011-05-31T13:57:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"71993dfe723879a44fec7f9e2c87959bb1d32661","kind":"commit","published_at":"2011-05-25T15:45:55.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"445d065720eaa35358fda4f8233d909ed11d2fb3","kind":"commit","published_at":"2010-01-12T19:21:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-17T22:09:43.210Z","dependent_packages_count":0,"downloads":3404,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":87.24651802602168,"dependent_repos_count":46.781949801970555,"dependent_packages_count":15.705942029816185,"stargazers_count":3.212013526680805,"forks_count":3.308305152748323,"average":31.25094570744751},"purl":"pkg:gem/recursive-open-struct-sd","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/recursive-open-struct-sd","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/recursive-open-struct-sd","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/recursive-open-struct-sd/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-16T22:00:50.391Z","issues_count":41,"pull_requests_count":44,"avg_time_to_close_issue":8861354.333333334,"avg_time_to_close_pull_request":11155083.268292682,"issues_closed_count":36,"pull_requests_closed_count":41,"pull_request_authors_count":36,"issue_authors_count":33,"avg_comments_per_issue":2.8780487804878048,"avg_comments_per_pull_request":2.659090909090909,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":90403.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":3.3333333333333335,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/issues","maintainers":[{"login":"aetherknight","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}],"active_maintainers":[{"login":"aetherknight","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct-sd/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct-sd/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct-sd/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct-sd/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/recursive-open-struct-sd/codemeta","maintainers":[{"uuid":"48293","login":"thaold","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://rubygems.org/profiles/thaold","role":null,"created_at":"2022-11-09T09:47:39.905Z","updated_at":"2022-11-09T09:47:39.905Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/thaold/packages"},{"uuid":"82429","login":"bithavoc","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://rubygems.org/profiles/bithavoc","role":null,"created_at":"2022-11-09T09:47:39.893Z","updated_at":"2022-11-09T09:47:39.893Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/bithavoc/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205267,"maintainers_count":68387,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","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":13669424,"name":"ruby-recursive-open-struct","ecosystem":"debian","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:41:05.408Z","latest_release_published_at":"2026-02-12T12:41:05.408Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-14T18:08:10.132Z","created_at":"2026-02-12T12:41:05.210Z","updated_at":"2026-03-14T18:08:10.132Z","registry_url":"https://tracker.debian.org/pkg/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":"https://packages.debian.org/trixie/ruby-recursive-open-struct","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T12:41:05.457Z","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-recursive-open-struct?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-recursive-open-struct/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","funded_packages_count":282},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-03-31T06:41:13.743Z","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":13779654,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:24:27.685Z","latest_release_published_at":"2026-02-13T13:24:27.685Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-13T23:37:26.332Z","created_at":"2026-02-13T13:24:27.516Z","updated_at":"2026-03-13T23:37:26.332Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-13T13:24:28.322Z","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-recursive-open-struct?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-recursive-open-struct/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","funded_packages_count":142},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-01T06:53:21.644Z","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":13713169,"name":"ruby-recursive-open-struct","ecosystem":"debian","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:39:22.106Z","latest_release_published_at":"2026-02-12T23:39:22.106Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-13T23:45:06.880Z","created_at":"2026-02-12T23:39:21.888Z","updated_at":"2026-03-14T00:02:15.008Z","registry_url":"https://tracker.debian.org/pkg/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":"https://packages.debian.org/bookworm/ruby-recursive-open-struct","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-02-12T23:39:22.618Z","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-recursive-open-struct?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-recursive-open-struct/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","funded_packages_count":364},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-01T06:53:23.701Z","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":12307101,"name":"recursive-open-struct","ecosystem":"rubygems","description":"RecursiveOpenStruct is a subclass of OpenStruct. It differs from\nOpenStruct in that it allows nested hashes to be treated in a recursive\nfashion. For example:\n\n    ros = RecursiveOpenStruct.new({ :a =\u003e { :b =\u003e 'c' } })\n    ros.a.b # 'c'\n\nAlso, nested hashes can still be accessed as hashes:\n\n    ros.a_as_a_hash # { :b =\u003e 'c' }\n","homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":[],"namespace":null,"versions_count":34,"first_release_published_at":"2011-05-20T10:40:20.384Z","latest_release_published_at":"2026-04-19T00:49:47.031Z","latest_release_number":"2.1.1","last_synced_at":"2026-04-19T01:03:26.953Z","created_at":"2025-10-07T05:22:01.269Z","updated_at":"2026-04-19T01:08:47.085Z","registry_url":"https://gem.coop/gems/recursive-open-struct","install_command":"gem install recursive-open-struct -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/recursive-open-struct/","metadata":{"funding":null},"repo_metadata":{"id":777720,"uuid":"468685","full_name":"aetherknight/recursive-open-struct","owner":"aetherknight","description":"OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs","archived":false,"fork":false,"pushed_at":"2026-04-03T00:46:04.000Z","size":205,"stargazers_count":289,"open_issues_count":6,"forks_count":55,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-04-13T20:03:16.849Z","etag":null,"topics":["openstruct-subclass","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jacobrask/styledocco","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aetherknight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2010-01-12T11:14:06.000Z","updated_at":"2026-04-12T07:51:37.000Z","dependencies_parsed_at":"2026-01-14T01:02:40.580Z","dependency_job_id":null,"html_url":"https://github.com/aetherknight/recursive-open-struct","commit_stats":{"total_commits":194,"total_committers":28,"mean_commits":6.928571428571429,"dds":0.3350515463917526,"last_synced_commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/aetherknight/recursive-open-struct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/sbom","scorecard":{"id":169303,"data":{"date":"2025-08-11","repo":{"name":"github.com/aetherknight/recursive-open-struct","commit":"d26b6e88135ec54e44a0b4efd48743469f242b7a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"Code-Review","score":2,"reason":"Found 6/23 approved changesets -- score normalized to 2","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":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/aetherknight/recursive-open-struct/ruby.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ruby.yml:17","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":"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":"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":"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt: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":"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":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"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-16T15:57:21.127Z","repository_id":777720,"created_at":"2025-08-16T15:57:21.127Z","updated_at":"2025-08-16T15:57:21.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31990586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: 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"},"owner_record":{"login":"aetherknight","name":"William (B.J.) Snow Orvis","uuid":"62613","kind":"user","description":null,"email":"","website":"https://www.aedifice.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/62613?u=d3e4348cb1d930cbe7c622d67055e396597131a5\u0026v=4","repositories_count":20,"last_synced_at":"2023-04-10T12:01:28.274Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/aetherknight","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-02T16:45:26.679Z","updated_at":"2023-04-10T12:01:28.351Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aetherknight/repositories"},"tags":[{"name":"v2.1.0","sha":"cd0f855f123509d24f401992278b6c90c395acf5","kind":"commit","published_at":"2025-12-05T07:02:40.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"d26b6e88135ec54e44a0b4efd48743469f242b7a","kind":"tag","published_at":"2024-10-04T05:53:36.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v2.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v2.0.0/manifests"},{"name":"v1.3.1","sha":"cc1adb47a2d3b550e67f76113e5641a3edb62892","kind":"tag","published_at":"2024-10-04T05:50:31.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"3f526d51dad6f79aae2ba7ea410a8e599822a602","kind":"tag","published_at":"2024-10-02T06:40:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.3.0/manifests"},{"name":"v1.2.2","sha":"3bb03300317fa0e5303e53f82881f6f3c74f6bad","kind":"tag","published_at":"2024-06-19T02:51:34.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"280d4eb58bfc425059790a4375c70a31ba13268c","kind":"tag","published_at":"2024-05-28T04:56:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"ae188cc947d5df7ffa05ea4372139e27796dde3e","kind":"commit","published_at":"2024-05-28T04:47:35.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"0f1a2f711cc33b65e4e72f76382f53c8ce040db0","kind":"commit","published_at":"2020-10-16T06:13:52.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"f9a66a88590d8e3d323ab758d3f12a0ff1ee5d0f","kind":"commit","published_at":"2020-06-21T03:38:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"ac06eb8b39b96cdcb583488a16f0fb8b66e5c93f","kind":"commit","published_at":"2020-03-11T06:31:11.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"244fa1035c9f248a44bccf97c89184c48dd6c72b","kind":"tag","published_at":"2018-02-03T20:31:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.1.0/manifests"},{"name":"v1.0.5","sha":"cf0d4f08c307b30534fe56efb85e90617440adf7","kind":"commit","published_at":"2017-06-22T05:46:37.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.5/manifests"},{"name":"v1.0.4","sha":"938a91fd344c64656e1fca0442488011d4646683","kind":"tag","published_at":"2017-04-29T15:46:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.4/manifests"},{"name":"v1.0.3","sha":"2edb1589bd3c0e506f6b18db17f30bf46c78a60e","kind":"tag","published_at":"2017-04-10T17:16:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"e708bba6cb19c076f845a6c0b43db438415cbac3","kind":"tag","published_at":"2016-12-19T23:53:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"e13bd316189c3965b4f68336880ea5e7743b8248","kind":"commit","published_at":"2016-01-18T18:36:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"bd44ec5a0f144774930585a7b5b4b848b781787c","kind":"tag","published_at":"2015-12-12T08:08:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v1.0.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v1.0.0/manifests"},{"name":"v0.6.5","sha":"e9fc371636ee40806149d2df76089aae2890cf2b","kind":"commit","published_at":"2015-07-01T04:08:59.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.5/manifests"},{"name":"v0.6.4","sha":"084ec9a2768d222cf67c49573f664473cba26bc0","kind":"commit","published_at":"2015-05-21T05:08:13.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.4/manifests"},{"name":"v0.6.3","sha":"7b0b8b480f6433fb9318fe2bca09ca0f064684f5","kind":"commit","published_at":"2015-04-11T19:25:20.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"d77c5d7d1a6cdf95d74e4f1d128799c0749a4914","kind":"commit","published_at":"2015-04-08T03:23:28.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"c3d28f39f09a234461a0d91f059067c23a18ec08","kind":"commit","published_at":"2015-03-28T22:39:03.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"e4b0ae94e416d70f8137b82916582002a957308c","kind":"commit","published_at":"2015-03-28T20:36:48.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.6.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.6.0/manifests"},{"name":"v0.5.0","sha":"5a1e179d86319406063756e244d138918d7508b8","kind":"commit","published_at":"2014-06-14T18:24:53.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.5.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.5.0/manifests"},{"name":"v0.4.5","sha":"0513869b62601e767379d6434742786efa247d18","kind":"tag","published_at":"2013-10-24T02:55:54.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.5","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"2a750ed990c5fa952b619f89e883a621b45f202f","kind":"commit","published_at":"2013-08-28T15:06:25.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.4","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"dd02b49ba779e3f46fecea6083f1516b580be0c7","kind":"tag","published_at":"2013-05-31T05:51:18.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.3","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"4f0778bd3560db70f7250bd72b38df28ade2af62","kind":"tag","published_at":"2013-05-30T04:26:45.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.2","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"85ef6eb8bfc6907eabbd414ab1a8b0f91315009b","kind":"tag","published_at":"2013-05-29T04:04:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"bbbad0594339a3c1ca230915914ffa51f241df63","kind":"tag","published_at":"2013-05-26T22:19:08.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.4.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"3338726cae0dff81c831bbb75fe5215c79dd12f3","kind":"commit","published_at":"2012-10-24T04:23:58.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"4970a39eb9e9d61f3f8903022c66e27caf9015aa","kind":"commit","published_at":"2012-10-24T03:44:07.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.3.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.3.0/manifests"},{"name":"v0.2.1","sha":"e8452e74c108b9944327db3d853af9df4a4a7fec","kind":"commit","published_at":"2011-05-31T13:57:02.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.1","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.1/manifests"},{"name":"v0.2.0","sha":"71993dfe723879a44fec7f9e2c87959bb1d32661","kind":"commit","published_at":"2011-05-25T15:45:55.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.2.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"445d065720eaa35358fda4f8233d909ed11d2fb3","kind":"commit","published_at":"2010-01-12T19:21:27.000Z","download_url":"https://codeload.github.com/aetherknight/recursive-open-struct/tar.gz/v0.1.0","html_url":"https://github.com/aetherknight/recursive-open-struct/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/aetherknight/recursive-open-struct@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-19T01:08:47.085Z","dependent_packages_count":0,"downloads":68493651,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.4168356175492661,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.0648771389181737,"average":0.12042818911685996},"purl":"pkg:gem/recursive-open-struct?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/recursive-open-struct","docker_dependents_count":435,"docker_downloads_count":1488865852,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-17T22:01:07.919Z","issues_count":41,"pull_requests_count":44,"avg_time_to_close_issue":8861354.333333334,"avg_time_to_close_pull_request":11155083.268292682,"issues_closed_count":36,"pull_requests_closed_count":41,"pull_request_authors_count":36,"issue_authors_count":33,"avg_comments_per_issue":2.8780487804878048,"avg_comments_per_pull_request":2.6818181818181817,"merged_pull_requests_count":30,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":90403.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":3.6666666666666665,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/issues","maintainers":[{"login":"aetherknight","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}],"active_maintainers":[{"login":"aetherknight","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/recursive-open-struct/codemeta","maintainers":[{"uuid":"50395","login":"Offirmo","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://gem.coop/profiles/Offirmo","role":null,"created_at":"2025-10-08T04:11:16.714Z","updated_at":"2025-10-08T04:11:16.714Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/Offirmo/packages"},{"uuid":"2368","login":"aetherknight","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://gem.coop/profiles/aetherknight","role":null,"created_at":"2025-10-08T04:11:16.771Z","updated_at":"2025-10-08T04:11:16.771Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/aetherknight/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190118,"maintainers_count":67397,"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":13407220,"name":"ruby-recursive-open-struct","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/aetherknight/recursive-open-struct","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/aetherknight/recursive-open-struct","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T15:56:22.363Z","latest_release_published_at":"2026-02-06T15:56:22.363Z","latest_release_number":"1.1.3-1","last_synced_at":"2026-03-06T17:21:04.600Z","created_at":"2026-02-06T15:56:15.862Z","updated_at":"2026-03-06T17:32:19.925Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-recursive-open-struct","install_command":"apt-get install ruby-recursive-open-struct","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-recursive-open-struct","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, pry, rake, ruby-rspec","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-recursive-open-struct?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-recursive-open-struct","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-recursive-open-struct/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-recursive-open-struct/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-recursive-open-struct/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-recursive-open-struct/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-recursive-open-struct/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-recursive-open-struct/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","funded_packages_count":161},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-01T06:53:16.927Z","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"}}],"commits":{"id":19438,"full_name":"aetherknight/recursive-open-struct","default_branch":"main","total_commits":219,"total_committers":31,"total_bot_commits":2,"total_bot_committers":1,"mean_commits":7.064516129032258,"dds":0.319634703196347,"past_year_total_commits":25,"past_year_total_committers":4,"past_year_total_bot_commits":2,"past_year_total_bot_committers":1,"past_year_mean_commits":6.25,"past_year_dds":0.19999999999999996,"last_synced_at":"2026-04-19T01:09:58.027Z","last_synced_commit":"b87b7ad5b61139472cc571c62479332d2f321eb8","created_at":"2023-03-07T11:41:03.793Z","updated_at":"2026-04-19T01:09:23.051Z","committers":[{"name":"William (B.J.) Snow Orvis","email":"aetherknight@gmail.com","login":"aetherknight","count":149},{"name":"Offirmo","email":"offirmo.net@gmail.com","login":"Offirmo","count":12},{"name":"fervic","email":"roberto@runawaybit.com","login":"fervic","count":11},{"name":"David Feldman","email":"dbfeldman@gmail.com","login":"fledman","count":6},{"name":"Kris Dekeyser","email":"kris.dekeyser@libis.be","login":null,"count":5},{"name":"Maple Ong","email":"maple.ong@gusto.com","login":"wildmaples","count":3},{"name":"Tom Chapin","email":"tchapin@gmail.com","login":"tomchapin","count":3},{"name":"Cédric Felizard","email":"cedric@felizard.fr","login":"infertux","count":2},{"name":"Hermann Mayer","email":"hermann.mayer92@gmail.com","login":"Jack12816","count":2},{"name":"Jean Boussier","email":"jean.boussier@gmail.com","login":"byroot","count":2},{"name":"Sebastian Gaul","email":"sebastian@mgvmedia.com","login":"SebastianVomMeer","count":2},{"name":"Thiago Guimaraes","email":"thiagogsr@gmail.com","login":"thiagogsr","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Richard Degenne","email":"richard.degenne@gmail.com","login":null,"count":1},{"name":"Victor Guzman","email":"victor.guzman@runawaybit.com","login":null,"count":1},{"name":"Ben Langfeld","email":"ben@langfeld.me","login":"benlangfeld","count":1},{"name":"Beni Cherniavsky-Paskin","email":"cben@redhat.com","login":"cben","count":1},{"name":"Edward Betts","email":"edward@4angle.com","login":"EdwardBetts","count":1},{"name":"Ewoud Kohl van Wijngaarden","email":"ewoud@kohlvanwijngaarden.nl","login":"ekohl","count":1},{"name":"Federico Aloi","email":"federico.aloi@gmail.com","login":"faloi","count":1},{"name":"Hartley McGuire","email":"skipkayhil@gmail.com","login":"skipkayhil","count":1},{"name":"Igor Victor","email":"gogainda@yandex.ru","login":"gogainda","count":1},{"name":"Ilya Umanets","email":"ilya.umanets@sabiogroup.com","login":"IlyaUmanets","count":1},{"name":"Joe Rafaniello","email":"jrafanie@redhat.com","login":"jrafanie","count":1},{"name":"Matt Culpepper","email":"matt@culpepper.co","login":"mculp","count":1},{"name":"Matthew O'Riordan","email":"matthew.oriordan@gmail.com","login":"mattheworiordan","count":1},{"name":"Pedro Sena","email":"sena.pedro@gmail.com","login":"PedroSena","count":1},{"name":"Peter Yeremenko","email":"peter.yeremenko@gmail.com","login":"pyeremenko","count":1},{"name":"Pirate Praveen","email":"praveen@debian.org","login":"pravi","count":1},{"name":"Richard Degenne","email":"richard.degenne+github@gmail.com","login":"Richard-Degenne","count":1},{"name":"Yuri Zubov","email":"yuri.zubov@cleverlabs.io","login":"yuri-zubov","count":1}],"past_year_committers":[{"name":"Wynn (B.J.) Snow Orvis","email":"aetherkn@aedifice.org","login":"aetherknight","count":20},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Hermann Mayer","email":"hermann.mayer92@gmail.com","login":"Jack12816","count":2},{"name":"Yuri Zubov","email":"yuri.zubov@cleverlabs.io","login":"yuri-zubov","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.908Z","repositories_count":6214529,"commits_count":900194549,"contributors_count":34915568,"owners_count":1143537,"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":"aetherknight/recursive-open-struct","html_url":"https://github.com/aetherknight/recursive-open-struct","last_synced_at":"2026-04-19T08:01:17.515Z","status":null,"issues_count":41,"pull_requests_count":48,"avg_time_to_close_issue":8861354.333333334,"avg_time_to_close_pull_request":9960879.891304348,"issues_closed_count":36,"pull_requests_closed_count":46,"pull_request_authors_count":37,"issue_authors_count":33,"avg_comments_per_issue":2.8780487804878048,"avg_comments_per_pull_request":2.4791666666666665,"merged_pull_requests_count":35,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":0,"past_year_pull_requests_count":7,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":155410.66666666666,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":6,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.7142857142857142,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":6,"created_at":"2023-05-12T16:01:30.203Z","updated_at":"2026-04-19T08:01:17.516Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/aetherknight%2Frecursive-open-struct/issues","issue_labels_count":{"bug":5,"feature":3},"pull_request_labels_count":{"github_actions":2,"dependencies":2},"issue_author_associations_count":{"NONE":28,"CONTRIBUTOR":10,"OWNER":3},"pull_request_author_associations_count":{"CONTRIBUTOR":31,"NONE":13,"OWNER":4},"issue_authors":{"aetherknight":3,"abonas":2,"pravi":2,"Kris-LIBIS":2,"Nowaker":2,"kke":2,"mculp":2,"jromigh":1,"lilith":1,"kubenstein":1,"31piy":1,"banister":1,"Richard-Degenne":1,"agrare":1,"wildmaples":1,"Odaeus":1,"jocubeit":1,"fervic":1,"dglancy":1,"SebastianVomMeer":1,"maxp-edcast":1,"pboettcher":1,"brauliobo":1,"ryanjones":1,"PedroSena":1,"SaltwaterC":1,"drewfradette":1,"aramgre":1,"trevorh":1,"serv":1,"ckoch-ncsa":1,"brandondrew":1,"jvalrog":1},"pull_request_authors":{"fervic":4,"aetherknight":4,"IlyaUmanets":2,"dependabot[bot]":2,"Kris-LIBIS":2,"Richard-Degenne":2,"wildmaples":2,"faloi":1,"SebastianVomMeer":1,"yuri-zubov":1,"jrafanie":1,"pyeremenko":1,"Offirmo":1,"Nowaker":1,"michaelachrisco":1,"pravi":1,"skipkayhil":1,"akhiln":1,"mculp":1,"ekohl":1,"viguza":1,"PedroSena":1,"tomchapin":1,"mattheworiordan":1,"EdwardBetts":1,"tangtao":1,"Jack12816":1,"jakobjanot":1,"gogainda":1,"epk":1,"thiagogsr":1,"davich":1,"casperisfine":1,"benlangfeld":1,"thorstenhirsch":1,"cben":1,"fledman":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.985Z","repositories_count":14332542,"issues_count":34459736,"pull_requests_count":112767108,"authors_count":11238912,"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":{"dependencies":2,"github_actions":2},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":4,"OWNER":3},"past_year_issue_authors":{},"past_year_pull_request_authors":{"aetherknight":3,"dependabot[bot]":2,"Jack12816":1,"yuri-zubov":1},"maintainers":[{"login":"aetherknight","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}],"active_maintainers":[{"login":"aetherknight","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aetherknight"}]},"events":{"total":{"DeleteEvent":1,"PullRequestEvent":6,"WatchEvent":13,"IssueCommentEvent":1,"PushEvent":9,"CreateEvent":3},"last_year":{"DeleteEvent":1,"PullRequestEvent":6,"IssueCommentEvent":1,"PushEvent":9,"CreateEvent":3}},"keywords":["openstruct-subclass","ruby"],"dependencies":[{"ecosystem":"rubygems","filepath":"recursive-open-struct.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-16T10:50:36.926Z","updated_at":"2022-08-16T10:50:36.926Z","repository_link":"https://github.com/aetherknight/recursive-open-struct/blob/main/recursive-open-struct.gemspec","dependencies":[{"id":1851504705,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":1851504706,"package_name":"pry","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":1851504707,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":1851504708,"package_name":"rdoc","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":1851504709,"package_name":"rspec","ecosystem":"rubygems","requirements":"~\u003e 3.2","direct":true,"kind":"development","optional":false},{"id":1851504710,"package_name":"simplecov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ruby.yml","sha":null,"kind":"manifest","created_at":"2024-06-02T21:26:56.690Z","updated_at":"2024-06-02T21:26:56.690Z","repository_link":"https://github.com/aetherknight/recursive-open-struct/blob/main/.github/workflows/ruby.yml","dependencies":[{"id":18371960033,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18371960034,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"943103cae7d3f1bb1e4951d5fcc7928b40e4b742","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2024-06-02T21:26:56.698Z","updated_at":"2024-06-02T21:26:56.698Z","repository_link":"https://github.com/aetherknight/recursive-open-struct/blob/main/Gemfile","dependencies":[]}],"score":30.973568492382356,"created_at":"2024-12-15T21:38:07.839Z","updated_at":"2026-05-01T04:32:11.089Z","avatar_url":"https://github.com/aetherknight.png","language":"Ruby","monthly_downloads":0,"readme":"# recursive-open-struct\n\nOpenStruct subclass that returns nested hash attributes as\nRecursiveOpenStructs.\n\n\n## Usage\n\nIt allows for hashes within hashes to be called in a chain of methods:\n\n```ruby\nros = RecursiveOpenStruct.new( { wha: { tagoo: 'siam' } } )\n\nros.wha.tagoo # =\u003e 'siam'\n```\n\nAlso, if needed, nested hashes can still be accessed as hashes:\n\n```ruby\nros.wha_as_a_hash # { tagoo: 'siam' }\n```\n\n\n### Optional: Recurse Over Arrays\n\nRecursiveOpenStruct can also optionally recurse across arrays, although you\nhave to explicitly enable it.\n\nDefault behavior:\n```ruby\nh = { :somearr =\u003e [ { name: 'a'}, { name: 'b' } ] }\n\nros = RecursiveOpenStruct.new(h)\nros.somearr # =\u003e [ { name: 'a'}, { name: 'b' } ]\n```\n\nEnabling `recurse_over_arrays`:\n\n```ruby\nros = RecursiveOpenStruct.new(h, recurse_over_arrays: true )\n\nros.somearr[0].name # =\u003e 'a'\nros.somearr[1].name # =\u003e 'b'\n```\n\n\n### Optional: Preserve Original Keys\n\nAlso, by default it will turn all hash keys into symbols internally:\n\n```ruby\nh = { 'fear' =\u003e 'is', 'the' =\u003e 'mindkiller' } }\nros = RecursiveOpenStruct.new(h)\nros.to_h # =\u003e { fear: 'is', the: 'mindkiller' }\n```\n\nYou can preserve the original keys by enabling `:preserve_original_keys`:\n\n```ruby\nh = { 'fear' =\u003e 'is', 'the' =\u003e 'mindkiller' } }\nros = RecursiveOpenStruct.new(h, preserve_original_keys: true)\nros.to_h # =\u003e { 'fear' =\u003e 'is', 'the' =\u003e 'mindkiller' }\n```\n\n### Optional: Raise error on missing attribute\n\nThis option allows to raise an error if you try to call an attribute you didn't specify in hash\n\n```ruby\nh = { 'fear' =\u003e 'is', 'the' =\u003e 'mindkiller' } }\nros = RecursiveOpenStruct.new(h, raise_on_missing: true)\nros.undefined # =\u003e undefined method `undefined' for #\u003cRecursiveOpenStruct fear=\"is\", the=\"mindkiller\"\u003e\n```\n\nThe default behaviour returns nil\n\n```ruby\nh = { 'fear' =\u003e 'is', 'the' =\u003e 'mindkiller' } }\nros = RecursiveOpenStruct.new(h)\nros.undefined # =\u003e nil\n```\n\n## Installation\n\nAvailable as a gem in rubygems, the default gem repository.\n\nIf you use bundler, just add recursive-open-struct to your gemfile :\n\n```ruby\ngem 'recursive-open-struct'\n```\n\nYou may also install the gem manually:\n\n    gem install recursive-open-struct\n\n\n## Contributing\n\nIf you would like to file or fix a bug, or propose a new feature, please review\n[CONTRIBUTING](CONTRIBUTING.md) first.\n\n\n## Supported Ruby Versions\n\nRecursive-open-struct attempts to support just the versions of Ruby that are\nstill actively maintained. Once a given major/minor version of Ruby no longer\nreceives patches, they will no longer be supported (but recursive-open-struct\nmay still work). I usually update the travis.yml file to reflect this when\npreparing for a new release or do some other work on recursive-open-struct.\n\nI also try to update recursive-open-struct to support new features in\nOpenStruct itself as new versions of Ruby are released. However, I don't\nactively monitor the status of this, so a newer feature might not work. If you\nencounter such a feature, please file a bug or a PR to fix it, and I will try\nto cut a new release of recursive-open-struct quickly.\n\n\n## SemVer Compliance\n\nRescursive-open-struct follows [SemVer\n2.0](https://semver.org/spec/v2.0.0.html) for its versioning.\n\n\n## Copyright\n\nCopyright (c) 2009-2018, The Recursive-open-struct developers (given in the\nfile AUTHORS.txt). See LICENSE.txt for details.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","activejob","mvc","rubygem","rspec","feature-flag","grape","ruby-gem","rack","sidekiq"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/354","html_url":"https://ruby.ecosyste.ms/projects/354"}