{"id":227543,"name":"safe-json","ecosystem":"hackage","description":"This library aims to make the updating of JSON formats or contents, while keeping backward compatibility, as painless as possible. The way this is achieved is through versioning and defined migration functions to migrate older (or newer) versions to the one used.\n\nThe library mainly consists of two classes:\n\nSafeJSON a: Defines the version of a and if (and how) it is migratable.\n\nMigrate a: Defines the data type (MigrateFrom a) that can be migrated to a and how to migrate from that type.\n\nUsing these two classes, JSON serialized data types will stay parsable, even after format changes.\n\nFor a more in-depth explanation and examples, please see the README at https://github.com/Vlix/safe-json#readme","homepage":"https://github.com/Vlix/safe-json#readme","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/Vlix/safe-json","keywords_array":["json","library","mit","Propose Tags"],"namespace":null,"versions_count":15,"first_release_published_at":"2019-04-19T20:18:30.000Z","latest_release_published_at":"2020-08-28T22:25:02.000Z","latest_release_number":"1.1.1","last_synced_at":"2026-05-04T13:02:12.458Z","created_at":"2022-04-06T01:06:11.366Z","updated_at":"2026-05-04T13:22:11.459Z","registry_url":"https://hackage.haskell.org/package/safe-json","install_command":"cabal install safe-json","documentation_url":null,"metadata":{},"repo_metadata":{"id":34652989,"uuid":"179502902","full_name":"Vlix/safe-json","owner":"Vlix","description":"Automatic versioning of JSON formats for Haskell data types (with backwards compatibility)","archived":false,"fork":false,"pushed_at":"2025-03-02T16:50:41.000Z","size":189,"stargazers_count":28,"open_issues_count":7,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-23T18:44:18.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/Vlix.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog.md","contributing":null,"funding":null,"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}},"created_at":"2019-04-04T13:28:06.000Z","updated_at":"2025-09-20T19:19:06.000Z","dependencies_parsed_at":"2025-04-15T00:45:31.165Z","dependency_job_id":null,"html_url":"https://github.com/Vlix/safe-json","commit_stats":{"total_commits":84,"total_committers":7,"mean_commits":12.0,"dds":"0.22619047619047616","last_synced_commit":"5145a5a7141896e0e016356ea89ed9f8ccd4f3f2"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Vlix/safe-json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vlix","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283130760,"owners_count":26784415,"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","status":"online","status_checked_at":"2025-11-07T02:00:06.343Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"Vlix","name":"Felix Paulusma","uuid":"6840701","kind":"user","description":"Japanologist/Linguist thrust into the programming world.","email":"","website":null,"location":"Leiden, The Netherlands","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6840701?u=05c22a719be50d7e076838e4606efaf7aba7a303\u0026v=4","repositories_count":1,"last_synced_at":"2023-03-02T18:45:32.104Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Vlix","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-13T09:34:50.697Z","updated_at":"2023-03-02T18:45:32.124Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vlix","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vlix/repositories"},"tags":[{"name":"v1.2.1.0","sha":"31c1a9ef99e84dfcf4d0db292f1c2acd94f803f9","kind":"commit","published_at":"2025-03-02T16:47:17.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.2.1.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.1.0/manifests"},{"name":"v1.2.0.2","sha":"cd3366ae3fc6857e0e3a46d878072699f3abf5a9","kind":"commit","published_at":"2024-11-05T05:08:10.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.2.0.2","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.2.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.2/manifests"},{"name":"v1.2.0.1","sha":"2a66d3098848bea6f6c080c6232a6d585ba34228","kind":"commit","published_at":"2023-12-29T20:36:35.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.2.0.1","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.2.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.1/manifests"},{"name":"v1.2.0.0","sha":"554a644946196c20e0c65b1574d33bfc2cb78f38","kind":"commit","published_at":"2023-09-10T16:34:21.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.2.0.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.2.0.0/manifests"},{"name":"v1.1.4.0","sha":"6406f65d902dfaf86e928531ac90b87061f5fa25","kind":"commit","published_at":"2023-07-04T18:23:24.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.4.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.4.0/manifests"},{"name":"v1.3.1.1","sha":"6ff577e16d3f9d4b43be1b4431e1f8e8fd0604ce","kind":"commit","published_at":"2022-03-20T01:45:48.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.3.1.1","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.3.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.3.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.3.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.3.1.1/manifests"},{"name":"v1.1.3.1","sha":"6ff577e16d3f9d4b43be1b4431e1f8e8fd0604ce","kind":"commit","published_at":"2022-03-20T01:45:48.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.3.1","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.3.1/manifests"},{"name":"v1.1.3.0","sha":"1a99e87a18652ce907389bb730399bd5bfd6302d","kind":"commit","published_at":"2022-03-09T01:38:08.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.3.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.3.0/manifests"},{"name":"v1.1.2.0","sha":"752b447208501bf9d0fc8e7e4f0c9e70ea6e3086","kind":"commit","published_at":"2021-11-23T01:31:06.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.2.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.2.0/manifests"},{"name":"v1.1.1.1","sha":"e556086c3c0e8cad8d636b36b7b62878748090c1","kind":"commit","published_at":"2020-12-25T18:26:20.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.1.1","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.1.1/manifests"},{"name":"v1.1.1","sha":"32faed1315b0d4079e3ce5644bb60bce54c37936","kind":"commit","published_at":"2020-08-28T21:57:54.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.1","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"13602f64d7e6f5cae64a82d933de17389e4b1bce","kind":"commit","published_at":"2019-12-26T22:12:41.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.1.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"96985c2fc0e82584d3236eb3f9de7f46a9c86f8d","kind":"commit","published_at":"2019-09-09T17:13:29.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v1.0.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v1.0.0/manifests"},{"name":"v0.1.0","sha":"167dfe33a120d71d3dd8821fcf21dbf3e2251398","kind":"commit","published_at":"2019-04-19T20:10:09.000Z","download_url":"https://codeload.github.com/Vlix/safe-json/tar.gz/v0.1.0","html_url":"https://github.com/Vlix/safe-json/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/Vlix/safe-json@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vlix%2Fsafe-json/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-05-04T13:22:11.430Z","dependent_packages_count":0,"downloads":3212,"downloads_period":"total","dependent_repos_count":7,"rankings":{"downloads":49.62175075365452,"dependent_repos_count":21.540299186621922,"dependent_packages_count":19.373186963198908,"stargazers_count":14.8740117171947,"forks_count":19.839599567715148,"docker_downloads_count":null,"average":25.049769637677038},"purl":"pkg:hackage/safe-json","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/hackage/safe-json","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/hackage/safe-json","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/hackage/safe-json/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-18T18:07:28.318Z","issues_count":22,"pull_requests_count":23,"avg_time_to_close_issue":14292077.235294119,"avg_time_to_close_pull_request":1363892.8095238095,"issues_closed_count":17,"pull_requests_closed_count":21,"pull_request_authors_count":6,"issue_authors_count":3,"avg_comments_per_issue":0.9545454545454546,"avg_comments_per_pull_request":0.8695652173913043,"merged_pull_requests_count":21,"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":1594.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":1.0,"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/Vlix%2Fsafe-json/issues","maintainers":[{"login":"Vlix","count":37,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Vlix"}],"active_maintainers":[{"login":"Vlix","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Vlix"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/safe-json/codemeta","maintainers":[{"uuid":"nideco","login":"nideco","name":null,"email":null,"url":null,"packages_count":13,"html_url":"https://hackage.haskell.org/user/nideco","role":null,"created_at":"2022-11-14T19:34:28.614Z","updated_at":"2022-11-14T19:34:28.614Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/maintainers/nideco/packages"}]}