* v0.50.0: Integrate frame-decode, redo storage APIs and break up Error. (#2100)
* WIP integrating new frame-decode and working out new storage APIS
* WIP: first pass adding new storage things to subxt-core
* Second pass over Address type and start impl in Subxt
* WIP new storage APIs
* WIP New storage APIs roughly completed, lots of errors still
* Remove PlainorMap enum; plain and map values now use same struct to simplify usage
* Begin 'fixing' errors
* WIP splitting errors and tidying payload/address traits
* Get subxt-core compiling
* Small fixes in subxt-core and remove metadata mod
* subxt-core: cargo check --all-targets passes
* Fix test
* WIP starting to update subxt from subxt-core changes
* WIP splitting up subxt errors into smaller variants
* WIP errors: add DispatchError errors
* Port new Storage APIs to subxt-core
* cargo check -p subxt passes
* Quick-fix errors in subxt-cli (explore subcommand)
* fmt
* Finish fixing codegen up and start fixing examples
* get Subxt examples compiling and bytes_at for constants
* Add some arcs to limit lifetimes in subxt/subxt-core storage APIs
* A little Arcing to allow more method chaining in Storage APIs, aligning with Subxt
* Update codegen test
* cargo check --all-targets passing
* cargo check --features 'unstable-light-client' passing
* clippy
* Remove unused dep in subxt
* use published frame-decode
* fix wasm-example
* Add new tx extension to fix daily tests
* Remove unused subxt_core::dynamic::DecodedValue type
* Update book to match changes
* Update docs to fix more broken bits
* Add missing docs
* fmt
* allow larger result errs for now
* Add missing alloc imports in subxt-core
* Fix doc tests and fix bug getting constant info
* Fix V14 -> Metadata transform for storage & constants
* Fix parachain example
* Fix FFI example
* BlockLength decodes t ostruct, not u128
* use fetch/iter shorthands rather than entry in most storage tests
* Fix some integration tests
* Fix Runtime codegen tests
* Expose the dynamic custom_value selecter and use in a UI test
* Update codegen metadata
* Tidy CLI storage query and support (str,str) as a storage address
* Add (str,str) as valid constant address too
* Show string tuple in constants example
* Via the magic of traits, avoid needing any clones of queries/addresses and accept references to them
* clippy
* [v0.50] update scale-info-legacy and frame-decode to latest (#2119)
* bump scale-info-legacy and frame-decode to latest
* Remove something we don't need in this PR
* Fully remove unused for now dep
* [v0.50] Convert historic metadata to subxt::Metadata (#2120)
* First pass converting historic metadatas to our subxt::Metadata type
* use published frame-decode
* fmt and rename legacy metadata macro
* Enable legacy feature where needed in subxt_metadata so it compiles on its own
* Use cargo hack more in CI and fix subxt-metadata features
* Add tests for metadata conversion (need to optimise; some too expensive right now
* Address performance and equality issues in metadata conversion testing
* fmt
* fmt all
* clippy
* Fix a doc link
* Test codegen and fixes to make it work
* Remove local frame-decode patch
* bump frame-decode to latest
* [v0.50.0] Allow visiting extrinsic fields in subxt_historic (#2124)
* Allow visiting extrinsic fields
* fmt
* Don't use local scale-decode dep
* Clippy and tidy
* Extend 'subxt codegen' CLI to work with legacy metadatas
* Simplify historic extrinsics example now that AccountId32s have paths/names
* clippy
* clippy
* clippy..
* Allow visiting storage values, too, and clean up extrinsic visiting a little by narrowing lifetime
* Try to fix flaky test
* Add custom value decode to extrinsics example
* Remove useless else branch ra thought I needed
* Simplify examples
* Prep to release v0.0.5 (#2126)
* Remove codec::Encode and codec::Decode from generated APIs by default
* clippy fixes
* clippy
* More fixes, and CompactAs only if Encode/Decode
* revert println in example
* fix lightclient test
* fix docs
* Fix another rust doc comment
* Fix failing storage test
* Remove now-unnecessary test
* clippy
* clippy
* Remove pointless clone
* Move Extrinsic decoding things to subxt_core and various tidy-ups
* A couple more fixes and fmt
* first pass moving tx logic to subxt_core
* cargo fmt
* fix wasm example
* clippy
* more clippy
* WIP Adding examples and such
* Move storage functionality more fully to subxt_core and nice examples for storage and txs
* Add example for events
* consistify how addresses/payloads are exposed in subxt-core and add runtime API fns
* Add runtime API core example
* fmt
* remove scale-info patch
* Add a little to the top level docs
* swap args around
* clippy
* cargo fmt and fix wasm-example
* doc fixes
* no-std-ise new subxt-core additions
* alloc, not core
* more no-std fixes
* A couple more fixes
* Add back extrinsic decode test
* start migrating, broken
* first iteration of updating
* fmt and clippy
* add Composite<u32> decoding via scale value patch
* bump scale type gen versions
* fix decoding with new scale decode
* compiling with changed deps
* core utils, condig, client, metadata
* core crate compiling
* signer crate no once lock
* add core to no-std-tests, change imports
* broken commit, start pulling everything together in subxt
* port more things to subxt
* events in core crate, extrinsics sadly much more difficult
* almost all examples pass again
* dynamic values fix in examples
* fix no std issue and fmt
* remove unused dependencies
* fix lightclient impl
* runtime version refactor
* formatting and addressing nits
* more comments addressed
* update wasm example and no-std-signer tests
* other nits and error impl on signer errors
* fix feature flag
* fix runtime version refactor
* fix doc links
* fix integration tests
* fix feature flag gated client state
* fix native feature in CI
* fix lightclient utils
* make imports more lean in subxt-core
* integrate changes from subxt-core imports into subxt
* other changes in subxt simplify imports more
* fix and docs
* doc false for cli
* fix clippy
* remove events block hash in tests
* codegen no-std support in generated code
* export alloc crate for no-std codegen
* fix doc test
* implement James comments
* remove std traits, use core traits instead
* address nits
* remove unusued dep in no-std tests
* fix Box import in no_std
* sp-crypto-hashing instead of sp-core-hashing
* bump scale-typegen, add no std codegen tests
* fix some things
* replace unmaintained derivative with derive_where to remove non-canonical warnings
* fmt
* remove unused dep
* fix deps
* update artifacts to fix type ID mismatches
* bump to latest scale-typegen
---------
Co-authored-by: James Wilson <james@jsdw.me>
* start migrating, broken
* first iteration of updating
* fmt and clippy
* add Composite<u32> decoding via scale value patch
* bump scale type gen versions
* fix decoding with new scale decode
* fix js-sys versions
* add nit comments
* subxt/tx: Derive std::cmp traits
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/runtime_api: Derive std::cmp traits
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/constants: Derive std::cmp traits
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/custom_values: Derive std::cmp traits
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt/storage: Derive std::cmp traits
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Fix non_canonical_partial_ord_impl clippy introduced in 1.73
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add comment wrt derivative issue that triggers clippy warning
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update subxt/src/backend/mod.rs
* Update subxt/src/constants/constant_address.rs
---------
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* Clone + Debug on Payloads/Addresses, and compare child storage results
* , to .
* clippy and fixes
* fix
* use derivative instead to remove boilerplate impls
* add missing import
* tidy up and extend wasm test timeout
* try 5 mins instead of 2
* add follow_stream impl
* follow_stream_unpin first draft
* add tests for follow_stream_unpin
* more tests and fixes for follow_stream_unpin
* first pass follow_stream_driver
* follow_stream_driver: add tests, fix things, buffer events from last finalized
* First pass finishing Backend impl
* Fix test compile issues
* clippy fixes
* clippy fix and consistify light_client
* revert lightclient tweak
* revert other lightclient thing
* cargo fmt
* start testing unstable backend behind feature flag
* more test fixes and move test-runtime metadata path just incase
* fix compile error
* ensure transaction progress stream actually used and fix another test
* cargo fmt
* CI tweak
* improve some comments and address some feedback bits
* update CI to use our own nightly binary
* wait for finalized block perhaps
* WIP backend trait
* WIP converting higher level stuff to using Backend impl
* more implementing new backend trait, mainly storage focused
* Get core code compiling with new backend bits
* subxt crate checks passing
* fix tests
* cargo fmt
* clippy/fixes
* merging and other fixes
* fix test
* fix lightclient code
* Fix some broken doc links
* another book link fix
* fix broken test when moving default_rpc_client
* fix dry_run test
* fix more tests; lightclient and wasm
* fix wasm tests
* fix some doc examples
* use next() instead of next_item()
* missing next_item() -> next()s
* move legacy RPc methods to LegacyRpcMethods type to host generic param instead of RpcClient
* standardise on all RpcClient types prefixed with Rpc, and 'raw' trait types prefixed with RawRpc so it's less ocnfusing which is which
* rename fixes
* doc fixes
* Add back system_dryRun RPC method and rename tx.dry_run() to tx.validate(), to signal that the calls are different
* Add a test that we return the correct extrinsic hash from submit()
* add TransactionValid details back, and protect against out of range bytes
* add test for decoding transaction validation from empty bytes
* fix clippy warning
* WIP new Metadata type
* Finish basic Metadata impl inc hashing and validation
* remove caching from metadata; can add that higher up
* remove caches
* update retain to use Metadata
* clippy fixes
* update codegen to use Metadata
* clippy
* WIP fixing subxt lib
* WIP fixing tests, rebuild artifacts, fix OrderedMap::retain
* get --all-targets compiling
* move DispatchError type lookup back to being optional
* cargo clippy
* fix docs
* re-use VariantIndex to get variants
* add docs and enforce docs on metadata crate
* fix docs
* add test and fix docs
* cargo fmt
* address review comments
* update lockfiles
* ExactSizeIter so we can ask for len() of things (and hopefully soon is_empty()
* Update frame-metadata to v15.1.0
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Enable V15 unstable metadata in frame-metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Move validation hashing to dedicated file
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Use sp-metadata-ir from substrate to work with metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Revert using sp-metadata-ir in favor of conversion to v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Convert v14 to v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Use v15 for validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Use v15 for codegen
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata/bench: Use v15
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust to v15 metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Adjust testing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Improve documentation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* force CI
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* rpc: Fetch metadata at version
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* artifacts: Update polkadot.scale from commit 6dc9e84dde2
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Fetch V15 using the new API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Add runtime API interface
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Hash runtime API metadata for validation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Extract runtime API metadata wrapper from subxt::Metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Adjust hashing cache to reflect root+item keys
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* rpc: Add raw state_call API method
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Add payload with static and dynamic variants
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Allow payloads to call into the runtime
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Add example to make a runtime API call both static and dynamic
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Simplify client fetching
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Address feedback and fallback to old API if needed
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Make mutability conditional on input params
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Regenerate polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Retain only pallets without runtime API info
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Retry via `Metadata_metadata` without conversion
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* payload: Remove `Decode` and change validation fn
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* metadata: Retain runtime API types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Runtime APIs documentation based on flag
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update examples/examples/custom_metadata_url.rs
Co-authored-by: James Wilson <james@jsdw.me>
* Update artifacts from polkadot-a6cfdb16e9
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs with polkadot-a6cfdb16e9
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Generate input structures for runtime API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* runtime_api: Remove the static paylaod and use single impl
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* examples: Fetch account nonce
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Adjust build script to fetch latest metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Check account nonce from runtime API
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update cargo.lock
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Fix doc generation for runtime types
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Rename `inputs` runtime calls module to `types`
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Generate Calls structs inside the types module
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Check Alice account nonce before submitting the tx
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Add metadata version option flag supporting v14 and unstable
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Specify version to fetch
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Fallback to fetching latest stable metadata
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* subxt: Add unstable-metadata feature to fetch the latest
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* RuntimeVersion with Latest and Version(u32)
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Update polkadot.rs
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Adjust fetch_metadata to inspect version list
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* testing: Adjust metadata to metadata_legacy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* events: Adjust docs to use metadata_legacy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* have a pass over fetch_metadata
* cargo fmt
* Option<String> when fetch metadata via latest API
* clippy
* fmt
* cli: Use the MetadataVersion from codegen
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Specify latest as default for MetadataVersion
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* cli: Remove version from metadata and use the one from file_or_url
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* Fix clippy
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
* codegen: Decode metadata independently for different RPC calls
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
---------
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Co-authored-by: James Wilson <james@jsdw.me>
* Add Static type which defers to Encode/Decode and impls EncodeAsType/DecodeAsType
* rename to static_type and impl Deref/Mut
* Improve type substitution in codegen so that concrete types can be swapped in
* A couple of comment tweaks and no need for a macro export
* Extend type substitution logic to work recursively on destination type
* cargo fmt
* Fix a couple of comments
* update ui test outpuot
* Add docs and missing_docs lint
* Add test for replacing multiple of Ident
* Update codegen/src/error.rs
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* update copyright year and fix ui test
* simplify another error
---------
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>