feat(xcm): support json schema (for CosmWasm VM support) (#1454)

# Description

- What does this PR do? Allows to generate JSON schema for subset of XCM
in std builds
- Why are these changes needed? To support XCM messages in CosmWasm
contracts which require Schemars to generate contract clients
- How were these changes implemented and what do they affect? We will
use schema feature flag to build XCM pallet with JSON schema enabled

# Checklist

- [x] My PR includes a detailed description as outlined in the
"Description" section above
- [x] My PR follows the [labeling requirements](CONTRIBUTING.md#Process)
of this project (at minimum one label for `T`
  required)
- [x] I have made corresponding changes to the documentation (if
applicable)
- [x] I have added tests that prove my fix is effective or that my
feature works (if applicable)
- [x] If this PR alters any external APIs or interfaces used by
Polkadot, the corresponding Polkadot PR is ready as well
  as the corresponding Cumulus PR (optional)
This commit is contained in:
dzmitry-lahoda
2023-12-07 16:40:16 +00:00
committed by GitHub
parent 1a4ab64bcb
commit 95c3ee10bc
13 changed files with 86 additions and 3 deletions
+5
View File
@@ -21,6 +21,7 @@ smallvec = "1.11.0"
sp-arithmetic = { path = "../arithmetic", default-features = false }
sp-debug-derive = { path = "../debug-derive", default-features = false }
sp-std = { path = "../std", default-features = false }
schemars = { version = "0.8.3", default-features = false, optional = true }
[features]
default = ["std"]
@@ -44,3 +45,7 @@ serde = [
"scale-info/serde",
"sp-arithmetic/serde",
]
json-schema = [
"dep:schemars",
]
@@ -23,6 +23,7 @@ use super::*;
#[derive(Encode, Decode, MaxEncodedLen, TypeInfo, Eq, PartialEq, Copy, Clone, Debug, Default)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
pub struct Weight {
#[codec(compact)]
/// The weight of computational time used based on some reference hardware.