{"id":13410524,"url":"https://github.com/bcomnes/jsonfeed-to-atom","last_synced_at":"2026-02-28T22:02:56.104Z","repository":{"id":41268480,"uuid":"129479984","full_name":"bcomnes/jsonfeed-to-atom","owner":"bcomnes","description":"Convert a JSON feed to an atom feed","archived":false,"fork":false,"pushed_at":"2025-06-09T15:55:26.000Z","size":260,"stargazers_count":23,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-09T09:15:56.445Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/jsonfeed-to-atom","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bcomnes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["bcomnes"],"custom":["https://bret.io"]}},"created_at":"2018-04-14T04:00:30.000Z","updated_at":"2025-06-09T15:55:30.000Z","dependencies_parsed_at":"2024-05-09T16:43:31.801Z","dependency_job_id":"be64314a-b0b5-48c0-8c32-d243d12049d2","html_url":"https://github.com/bcomnes/jsonfeed-to-atom","commit_stats":{"total_commits":104,"total_committers":7,"mean_commits":"14.857142857142858","dds":0.4807692307692307,"last_synced_commit":"1ae944d055774d2777330f7e124cef6f6d025202"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/bcomnes/jsonfeed-to-atom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-atom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-atom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-atom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-atom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcomnes","download_url":"https://codeload.github.com/bcomnes/jsonfeed-to-atom/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-atom/sbom","scorecard":{"id":228729,"data":{"date":"2025-08-11","repo":{"name":"github.com/bcomnes/jsonfeed-to-atom","commit":"aeb3a129b2487a288f711910761e0efecb31d334"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/11 approved changesets -- score normalized to 0","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":"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":"Maintained","score":0,"reason":"1 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":"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":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/test.yml:31","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/bcomnes/jsonfeed-to-atom/test.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/release.yml:28","Warn: npmCommand not pinned by hash: .github/workflows/test.yml:24","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   2 npmCommand 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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"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 'master'"],"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 19 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-17T04:23:29.010Z","repository_id":41268480,"created_at":"2025-08-17T04:23:29.010Z","updated_at":"2025-08-17T04:23:29.010Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29953212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:07.473Z","updated_at":"2026-02-28T22:02:51.076Z","avatar_url":"https://github.com/bcomnes.png","language":"JavaScript","funding_links":["https://github.com/sponsors/bcomnes","https://bret.io"],"categories":["JavaScript"],"sub_categories":[],"readme":"# jsonfeed-to-atom\n\n[![npm version][2]][3] [![build status][4]][5]\n[![downloads][8]][9] [![js-standard-style][10]][11]\n\nConvert a JSON feed to an atom feed.\n\n![JSON feed icon](/icon.png)\n\n## Installation\n```console\n$ npm install jsonfeed-to-atom\n```\n\n## Usage\n\n```js\nconst jsonfeedToAtom = require('jsonfeed-to-atom')\nconst someJSONFeed = require('./load-some-json-feed-data.json')\n\nconst atomFeed = jsonfeedToAtom(someJSONFeed) // Returns an atom formatted json feed\n```\n\nExample input:\n\n```json\n{\n \"version\": \"https://jsonfeed.org/version/1\",\n \"title\": \"bret.io log\",\n \"home_page_url\": \"https://bret.io\",\n \"feed_url\": \"https://bret.io/feed.json\",\n \"description\": \"A running log of announcements, projects and accomplishments.\",\n \"next_url\": \"https://bret.io/2017.json\",\n \"icon\": \"https://bret.io/icon-512x512.png\",\n \"author\": {\n  \"name\": \"Bret Comnes\",\n  \"url\": \"https://bret.io\",\n  \"avatar\": \"https://gravatar.com/avatar/8d8b82740cb7ca994449cccd1dfdef5f?size=512\"\n },\n \"items\": [\n  {\n   \"date_published\": \"2018-04-07T20:48:02.000Z\",\n   \"content_text\": \"Wee wooo this is some content. \\n Maybe a new paragraph too\",\n   \"url\": \"https://bret.io/my-text-post\",\n   \"id\": \"https://bret.io/my-text-post-2018-04-07T20:48:02.000Z\"\n  },\n  {\n   \"date_published\": \"2018-04-07T22:06:43.000Z\",\n   \"content_html\": \"\u003cp\u003eHello, world!\u003c/p\u003e\",\n   \"title\": \"This is a blog title\",\n   \"url\": \"https://bret.io/my-blog-post\",\n   \"external_url\": \"https://example.com/some-external-link\",\n   \"id\": \"https://bret.io/my-blog-post-2018-04-07T22:06:43.000Z\"\n  }\n ]\n}\n```\n\nExample output:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cfeed xmlns=\"http://www.w3.org/2005/Atom\"\u003e\n  \u003ctitle\u003ebret.io log\u003c/title\u003e\n  \u003cid\u003ehttps://bret.io/feed.xml\u003c/id\u003e\n  \u003cupdated\u003e2018-04-07T22:06:43.000Z\u003c/updated\u003e\n  \u003clink rel=\"self\" type=\"application/atom+xml\" href=\"https://bret.io/feed.xml\"/\u003e\n  \u003clink rel=\"alternate\" type=\"application/json\" href=\"https://bret.io/feed.json\"/\u003e\n  \u003clink rel=\"alternate\" type=\"text/html\" href=\"https://bret.io\"/\u003e\n  \u003clink rel=\"next\" href=\"https://bret.io/2017.xml\"/\u003e\n  \u003cauthor\u003e\n    \u003cname\u003eBret Comnes\u003c/name\u003e\n    \u003curi\u003ehttps://bret.io\u003c/uri\u003e\n  \u003c/author\u003e\n  \u003cgenerator uri=\"https://github.com/bcomnes/jsonfeed-to-atom#readme\" version=\"1.0.0\"\u003ejsonfeed-to-atom\u003c/generator\u003e\n  \u003crights\u003e© 2018 Bret Comnes\u003c/rights\u003e\n  \u003csubtitle\u003eA running log of announcements, projects and accomplishments.\u003c/subtitle\u003e\n  \u003centry\u003e\n    \u003cid\u003ehttps://bret.io/my-text-post-2018-04-07T20:48:02.000Z\u003c/id\u003e\n    \u003ctitle\u003eWee wooo this is some content.\u003c/title\u003e\n    \u003cupdated\u003e2018-04-07T20:48:02.000Z\u003c/updated\u003e\n    \u003cpublished\u003e2018-04-07T20:48:02.000Z\u003c/published\u003e\n    \u003ccontent type=\"text\"\u003eWee wooo this is some content.\n Maybe a new paragraph too\u003c/content\u003e\n    \u003clink rel=\"alternate\" href=\"https://bret.io/my-text-post\"/\u003e\n  \u003c/entry\u003e\n  \u003centry\u003e\n    \u003cid\u003ehttps://bret.io/my-blog-post-2018-04-07T22:06:43.000Z\u003c/id\u003e\n    \u003ctitle\u003eThis is a blog title\u003c/title\u003e\n    \u003cupdated\u003e2018-04-07T22:06:43.000Z\u003c/updated\u003e\n    \u003cpublished\u003e2018-04-07T22:06:43.000Z\u003c/published\u003e\n    \u003ccontent type=\"html\"\u003e\n      \u003c![CDATA[\u003cp\u003eHello, world!\u003c/p\u003e]]\u003e\n    \u003c/content\u003e\n    \u003clink rel=\"alternate\" href=\"https://bret.io/my-blog-post\"/\u003e\n    \u003clink rel=\"related\" href=\"https://example.com/some-external-link\"/\u003e\n  \u003c/entry\u003e\n\u003c/feed\u003e\n```\n\n## API\n### `jsonfeedToAtom(parsedJsonfeed, opts)`\nCoverts a parsed JSON feed into an atom feed.  Returns the string of the atom feed.\n\nOpts include:\n\n```js\n{\n  // a function that returns the atom feed url\n  feedURLFn: (feedURL, jf) =\u003e feedURL.replace(/\\.json\\b/, '.xml')\n}\n```\n\n## See also\n\n- [JSON Feed: Mapping RSS and Atom to JSON Feed](https://jsonfeed.org/mappingrssandatom)\n- [AtomEnabled: Developers \u003e Syndication](https://mro.github.io/atomenabled.org/)  ([Archive](https://web.archive.org/web/20160113103647/http://atomenabled.org/developers/syndication/#link))\n- [bcomnes/generate-feed](https://github.com/bcomnes/generate-feed)\n- [Rss20AndAtom10Compared](http://www.intertwingly.net/wiki/pie/Rss20AndAtom10Compared)\n- [bcomnes/jsonfeed-to-rss](https://github.com/bcomnes/jsonfeed-to-rss): For podcasts or if you prefer RSS\n\n## License\n[MIT](https://tldrlegal.com/license/mit-license)\n\n[0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square\n[1]: https://nodejs.org/api/documentation.html#documentation_stability_index\n[2]: https://img.shields.io/npm/v/jsonfeed-to-atom.svg?style=flat-square\n[3]: https://npmjs.org/package/jsonfeed-to-atom\n[4]: https://github.com/bcomnes/jsonfeed-to-atom/actions/workflows/test.yml/badge.svg\n[5]: https://github.com/bcomnes/jsonfeed-to-atom/actions/workflows/test.yml\n[8]: http://img.shields.io/npm/dm/jsonfeed-to-atom.svg?style=flat-square\n[9]: https://npmjs.org/package/jsonfeed-to-atom\n[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\n[11]: https://github.com/feross/standard\n[12]: https://img.shields.io/coveralls/bcomnes/jsonfeed-to-atom/master.svg?style=flat-square\n[13]: https://coveralls.io/github/bcomnes/jsonfeed-to-atom\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fjsonfeed-to-atom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbcomnes%2Fjsonfeed-to-atom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fjsonfeed-to-atom/lists"}