{"id":19358376,"url":"https://github.com/paritytech/desub","last_synced_at":"2025-04-23T11:31:31.807Z","repository":{"id":37177970,"uuid":"226568548","full_name":"paritytech/desub","owner":"paritytech","description":"Decode Substrate with Backwards-Compatible Metadata","archived":false,"fork":false,"pushed_at":"2024-03-13T00:36:22.000Z","size":1448,"stargazers_count":39,"open_issues_count":25,"forks_count":13,"subscribers_count":12,"default_branch":"v1","last_synced_at":"2024-10-11T17:49:24.154Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paritytech.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2019-12-07T19:56:04.000Z","updated_at":"2024-09-03T21:46:42.000Z","dependencies_parsed_at":"2023-01-22T13:46:08.211Z","dependency_job_id":"491ad505-5606-4ed0-a515-cb283db5cdea","html_url":"https://github.com/paritytech/desub","commit_stats":{"total_commits":235,"total_committers":9,"mean_commits":26.11111111111111,"dds":"0.22127659574468084","last_synced_commit":"276c57e3c00db1102da06367804e6da402b40a5e"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fdesub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fdesub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fdesub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Fdesub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paritytech","download_url":"https://codeload.github.com/paritytech/desub/tar.gz/refs/heads/v1","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223922085,"owners_count":17225636,"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"}},"keywords":[],"created_at":"2024-11-10T07:11:28.162Z","updated_at":"2024-11-10T07:11:28.692Z","avatar_url":"https://github.com/paritytech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![tests](https://github.com/insipx/desub/workflows/Rust/badge.svg)\n# De[code] Sub[strate]\n\n\u003csub\u003e\u003csup\u003e† This software is experimental, and not intended for production use yet. Use at your own risk.\n\nEncompassing decoder for substrate/polkadot/kusama types.\n\nGets type definitions from polkadot-js via JSON and decodes them into components\nthat outline types and make decoding byte-strings possible, as long as the\nmodule/generic type name are known.\n\nSupports Metadata versions from v8, which means all of Kusama (from CC1). Older networks are not supported (E.G Alexander).\n   - makes decoding generic types from the substrate rpc possible\n   - requires parsing JSON with type definitions, and implementing traits\n      `TypeDetective` and `Decoder` in order to work for arbitrary chains.\n      However, if the JSON follows the same format as PolkadotJS definitions\n      (look at `definitions.json` and `overrides.json`) it would be possible to\n      simply deserialize into Polkadot structs and utilize those. The decoding\n      itself is generic enough to allow it.\n   - types must adhere to the conventions set out by polkadot decoding\n      - type definitions for Polkadot (Kusama) are taken from Polkadot.js and deserialized into Rust (extras/polkadot)\n\nCurrently Supported Metadata Versions (From Kusama CC1):\n- [x] V8\n- [x] V9\n- [x] V10\n- [x] V11\n- [x] V12\n- [x] V13\n- [x] V14\n\n### (Tentative) Release \u0026 Maintenence\n#### Note: Release description is in no way complete because of current \u0026 active development for legacy desub types \u0026 scale-info based types. it is purely here as a record for things that _should_ be taken into account in the future\n\n- Depending on changes in legacy desub code, bump version in Cargo.toml for `desub/`, `desub-current/`, `desub-legacy/`, `desub-common/`, `desub-json-resolver/`\n- note `upgrade-blocks` present [here](https://github.com/polkadot-js/api/tree/master/packages/types-known/src/upgrades) and modify the hard-coded upgrade blocks as necessary in the desub `runtimes.rs` file.\n- Take note of PR's that have been merged since the last release.\n\t- look over CHANGELOG. Make sure to include any PR's that were missed in the `Unreleased` section.\n\t- Move changes in `Unreleased` section to a new section corresponding to the version being released, making sure to keep the `Unreleased` header.\n- make a PR with these changes\n- once PR is merged, push a tag in the form `vX.X.X` (E.G `v0.1.0`)\n```bash\ngit tag v0.1.0\ngit push --tags origin master\n```\n- Once tags are pushed, a github workflow will start that will draft a release. You should be able to find the workflow\nrunning under `Actions` in the github repository.\n\t- NOTE: If something goes wrong it is OK. Delete the tag from the repo, re-create the tag locally and re-push. The workflow will run whenever a tag with the correct form is pushed. If more changes need to be made to the repo that will require another PR.\n- Once the workflow finishes, make changes to the resulting draft release if necessary, and hit `publish`.\n- Once published on github, publish each crate that has changed to `crates.io`. Refer to\n  [this](https://doc.rust-lang.org/cargo/reference/publishing.html) for how to publish to crates.io.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fdesub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparitytech%2Fdesub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Fdesub/lists"}