Support for Metadata v12 (#2599)

* Support for Metadata v12

* v12 static data

* Treat 255 as reserved

* Point static to v12
This commit is contained in:
Jaco Greeff
2020-09-14 12:35:30 +02:00
committed by GitHub
parent 28355424bd
commit dac3261a16
13 changed files with 12001 additions and 47 deletions
@@ -12,8 +12,11 @@ import createUnchecked from './createUnchecked';
/** @internal */
export default function fromMetadata (registry: Registry, metadata: RegistryMetadata): ModulesWithCalls {
return metadata.asLatest.modules
.filter(({ calls }): boolean => calls.isSome)
.reduce((result, { calls, name }: RegistryMetadataModule, sectionIndex): ModulesWithCalls => {
.filter(({ calls }) => calls.isSome)
.reduce((result, { calls, index, name }: RegistryMetadataModule, _sectionIndex): ModulesWithCalls => {
const sectionIndex = index.eqn(255)
? _sectionIndex
: index.toNumber();
const section = stringCamelCase(name.toString());
result[section] = calls.unwrap().reduce((newModule: Calls, callMetadata, methodIndex): Calls => {
@@ -20,12 +20,13 @@ import v7ToV8 from './v7/toV8';
import v8ToV9 from './v8/toV9';
import v9ToV10 from './v9/toV10';
import v10ToV11 from './v10/toV11';
import v11ToLatest from './v11/toLatest';
import v11ToV12 from './v11/toV12';
import v12ToLatest from './v12/toLatest';
import { getUniqTypes, toCallsOnly } from './util';
type MetaMapped = MetadataV0 | MetadataV1 | MetadataV2 | MetadataV3 | MetadataV4 | MetadataV5 | MetadataV6 | MetadataV7 | MetadataV8 | MetadataV9 | MetadataV10 | MetadataV11;
type MetaVersions = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
type MetaAsX = 'asV0' | 'asV1' | 'asV2' | 'asV3' | 'asV4' | 'asV5' | 'asV6' | 'asV7' | 'asV8' | 'asV9' | 'asV10' | 'asV11';
type MetaVersions = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13;
type MetaAsX = 'asV0' | 'asV1' | 'asV2' | 'asV3' | 'asV4' | 'asV5' | 'asV6' | 'asV7' | 'asV8' | 'asV9' | 'asV10' | 'asV11' | 'asV12';
/**
* @name MetadataVersioned
@@ -161,12 +162,19 @@ export default class MetadataVersioned extends Struct {
return this._getVersion(11, v10ToV11);
}
/**
* @description Returns the wrapped values as a V10 object
*/
public get asV12 (): MetadataV11 {
return this._getVersion(12, v11ToV12);
}
/**
* @description Returns the wrapped values as a latest version object
*/
public get asLatest (): MetadataLatest {
// This is non-existent & latest - applied here to do the module-specific type conversions
return this._getVersion(12, v11ToLatest);
return this._getVersion(13, v12ToLatest);
}
/**
+1 -1
View File
@@ -2,6 +2,6 @@
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import metadata from './v11/static';
import metadata from './v12/static';
export default metadata;
@@ -0,0 +1,21 @@
// Copyright 2017-2020 @polkadot/metadata authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { MetadataV11, MetadataV12, ModuleMetadataV12 } from '@polkadot/types/interfaces/metadata';
import { Registry } from '@polkadot/types/types';
/**
* @internal
**/
export default function toV12 (registry: Registry, { extrinsic, modules }: MetadataV11): MetadataV12 {
return registry.createType('MetadataLatest', {
extrinsic,
modules: modules.map((mod): ModuleMetadataV12 =>
registry.createType('ModuleMetadataV12', {
...mod,
index: 255
})
)
});
}
@@ -0,0 +1,19 @@
// Copyright 2017-2020 @polkadot/metadata authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { TypeRegistry } from '@polkadot/types';
import substrateJson from './static-substrate.json';
import substrateData from './static';
import { decodeLatestSubstrate, defaultValues, toLatest } from '../util/testUtil';
describe('MetadataV12 (substrate)', (): void => {
const registry = new TypeRegistry();
decodeLatestSubstrate(registry, 12, substrateData, substrateJson);
toLatest(registry, 12, substrateData);
defaultValues(registry, substrateData);
});
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -2,12 +2,12 @@
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { EventMetadataV11, EventMetadataLatest, FunctionMetadataV11, FunctionMetadataLatest, MetadataV11, MetadataLatest, ModuleMetadataLatest, StorageMetadataV11, StorageMetadataLatest, StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata';
import { EventMetadataV12, EventMetadataLatest, FunctionMetadataV12, FunctionMetadataLatest, MetadataV12, MetadataLatest, ModuleMetadataLatest, StorageMetadataV12, StorageMetadataLatest, StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata';
import { Registry, OverrideModuleType } from '@polkadot/types/types';
import { getModuleTypes } from '@polkadot/types-known';
import { Type } from '@polkadot/types/primitive';
import { stringCamelCase } from '@polkadot/util';
import { assert, stringCamelCase } from '@polkadot/util';
// TODO Handle consts as well
@@ -37,7 +37,7 @@ function setTypeOverride (sectionTypes: OverrideModuleType, type: Type): void {
* Apply module-specific type overrides (always be done as part of toLatest)
* @internal
**/
function convertCalls (registry: Registry, calls: FunctionMetadataV11[], sectionTypes: OverrideModuleType): FunctionMetadataLatest[] {
function convertCalls (registry: Registry, calls: FunctionMetadataV12[], sectionTypes: OverrideModuleType): FunctionMetadataLatest[] {
return calls.map(({ args, documentation, name }): FunctionMetadataLatest => {
args.forEach(({ type }) => setTypeOverride(sectionTypes, type));
@@ -49,7 +49,7 @@ function convertCalls (registry: Registry, calls: FunctionMetadataV11[], section
* Apply module-specific type overrides (always be done as part of toLatest)
* @internal
**/
function convertEvents (registry: Registry, events: EventMetadataV11[], sectionTypes: OverrideModuleType): EventMetadataLatest[] {
function convertEvents (registry: Registry, events: EventMetadataV12[], sectionTypes: OverrideModuleType): EventMetadataLatest[] {
return events.map(({ args, documentation, name }): EventMetadataLatest => {
args.forEach((type) => setTypeOverride(sectionTypes, type));
@@ -61,7 +61,7 @@ function convertEvents (registry: Registry, events: EventMetadataV11[], sectionT
* Apply module-specific storage type overrides (always part of toLatest)
* @internal
**/
function convertStorage (registry: Registry, { items, prefix }: StorageMetadataV11, sectionTypes: OverrideModuleType): StorageMetadataLatest {
function convertStorage (registry: Registry, { items, prefix }: StorageMetadataV12, sectionTypes: OverrideModuleType): StorageMetadataLatest {
return registry.createType('StorageMetadataLatest', {
items: items.map(({ documentation, fallback, modifier, name, type }): StorageEntryMetadataLatest => {
let resultType: Type;
@@ -87,7 +87,12 @@ function convertStorage (registry: Registry, { items, prefix }: StorageMetadataV
* most-recent metadata, since it allows us a chance to actually apply call and storage specific type aliasses
* @internal
**/
export default function toLatest (registry: Registry, { extrinsic, modules }: MetadataV11): MetadataLatest {
export default function toLatest (registry: Registry, { extrinsic, modules }: MetadataV12): MetadataLatest {
const allIndexes = modules.map(({ index }) => index.toNumber());
const hasReserved = allIndexes.some((index) => index !== 255) && allIndexes.some((index) => index === 255);
assert(!hasReserved, 'This API implementation only supports module indexes 0-254, index 255 is marked as reserved');
return registry.createType('MetadataLatest', {
extrinsic,
modules: modules.map((mod): ModuleMetadataLatest => {
+49 -1
View File
@@ -25,7 +25,7 @@ import { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV
import { AuthorityIndex, AuthorityList, AuthorityWeight, GrandpaEquivocation, GrandpaEquivocationProof, GrandpaEquivocationValue, GrandpaPrevote, JustificationNotification, KeyOwnerProof, NextAuthority, PendingPause, PendingResume, Precommits, Prevotes, ReportedRoundStates, RoundState, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';
import { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement } from '@polkadot/types/interfaces/identity';
import { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';
import { CallMetadataV0, DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV3, DoubleMapTypeV4, DoubleMapTypeV5, DoubleMapTypeV6, DoubleMapTypeV7, DoubleMapTypeV8, DoubleMapTypeV9, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV8, ErrorMetadataV9, EventMetadataLatest, EventMetadataV0, EventMetadataV1, EventMetadataV10, EventMetadataV11, EventMetadataV2, EventMetadataV3, EventMetadataV4, EventMetadataV5, EventMetadataV6, EventMetadataV7, EventMetadataV8, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV0, FunctionArgumentMetadataV1, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV2, FunctionArgumentMetadataV3, FunctionArgumentMetadataV4, FunctionArgumentMetadataV5, FunctionArgumentMetadataV6, FunctionArgumentMetadataV7, FunctionArgumentMetadataV8, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV0, FunctionMetadataV1, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV2, FunctionMetadataV3, FunctionMetadataV4, FunctionMetadataV5, FunctionMetadataV6, FunctionMetadataV7, FunctionMetadataV8, FunctionMetadataV9, MapTypeLatest, MapTypeV0, MapTypeV10, MapTypeV11, MapTypeV2, MapTypeV3, MapTypeV4, MapTypeV5, MapTypeV6, MapTypeV7, MapTypeV8, MapTypeV9, MetadataAll, MetadataLatest, MetadataV0, MetadataV1, MetadataV10, MetadataV11, MetadataV2, MetadataV3, MetadataV4, MetadataV5, MetadataV6, MetadataV7, MetadataV8, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV6, ModuleConstantMetadataV7, ModuleConstantMetadataV8, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV0, ModuleMetadataV1, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV2, ModuleMetadataV3, ModuleMetadataV4, ModuleMetadataV5, ModuleMetadataV6, ModuleMetadataV7, ModuleMetadataV8, ModuleMetadataV9, OuterDispatchCallV0, OuterDispatchMetadataV0, OuterEventEventMetadataEventsV0, OuterEventEventMetadataV0, OuterEventMetadataV0, PlainTypeLatest, PlainTypeV0, PlainTypeV10, PlainTypeV11, PlainTypeV2, PlainTypeV3, PlainTypeV4, PlainTypeV5, PlainTypeV6, PlainTypeV7, PlainTypeV8, PlainTypeV9, RuntimeModuleMetadataV0, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV6, StorageEntryMetadataV7, StorageEntryMetadataV8, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV6, StorageEntryModifierV7, StorageEntryModifierV8, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV6, StorageEntryTypeV7, StorageEntryTypeV8, StorageEntryTypeV9, StorageFunctionMetadataV0, StorageFunctionMetadataV1, StorageFunctionMetadataV2, StorageFunctionMetadataV3, StorageFunctionMetadataV4, StorageFunctionMetadataV5, StorageFunctionModifierV0, StorageFunctionModifierV1, StorageFunctionModifierV2, StorageFunctionModifierV3, StorageFunctionModifierV4, StorageFunctionModifierV5, StorageFunctionTypeV0, StorageFunctionTypeV1, StorageFunctionTypeV2, StorageFunctionTypeV3, StorageFunctionTypeV4, StorageFunctionTypeV5, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV4, StorageHasherV5, StorageHasherV6, StorageHasherV7, StorageHasherV8, StorageHasherV9, StorageMetadataLatest, StorageMetadataV0, StorageMetadataV10, StorageMetadataV11, StorageMetadataV7, StorageMetadataV8, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
import { CallMetadataV0, DoubleMapTypeLatest, DoubleMapTypeV10, DoubleMapTypeV11, DoubleMapTypeV12, DoubleMapTypeV3, DoubleMapTypeV4, DoubleMapTypeV5, DoubleMapTypeV6, DoubleMapTypeV7, DoubleMapTypeV8, DoubleMapTypeV9, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV8, ErrorMetadataV9, EventMetadataLatest, EventMetadataV0, EventMetadataV1, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV2, EventMetadataV3, EventMetadataV4, EventMetadataV5, EventMetadataV6, EventMetadataV7, EventMetadataV8, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV0, FunctionArgumentMetadataV1, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV2, FunctionArgumentMetadataV3, FunctionArgumentMetadataV4, FunctionArgumentMetadataV5, FunctionArgumentMetadataV6, FunctionArgumentMetadataV7, FunctionArgumentMetadataV8, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV0, FunctionMetadataV1, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV2, FunctionMetadataV3, FunctionMetadataV4, FunctionMetadataV5, FunctionMetadataV6, FunctionMetadataV7, FunctionMetadataV8, FunctionMetadataV9, MapTypeLatest, MapTypeV0, MapTypeV10, MapTypeV11, MapTypeV12, MapTypeV2, MapTypeV3, MapTypeV4, MapTypeV5, MapTypeV6, MapTypeV7, MapTypeV8, MapTypeV9, MetadataAll, MetadataLatest, MetadataV0, MetadataV1, MetadataV10, MetadataV11, MetadataV12, MetadataV2, MetadataV3, MetadataV4, MetadataV5, MetadataV6, MetadataV7, MetadataV8, MetadataV9, ModuleConstantMetadataLatest, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV6, ModuleConstantMetadataV7, ModuleConstantMetadataV8, ModuleConstantMetadataV9, ModuleMetadataLatest, ModuleMetadataV0, ModuleMetadataV1, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV2, ModuleMetadataV3, ModuleMetadataV4, ModuleMetadataV5, ModuleMetadataV6, ModuleMetadataV7, ModuleMetadataV8, ModuleMetadataV9, OuterDispatchCallV0, OuterDispatchMetadataV0, OuterEventEventMetadataEventsV0, OuterEventEventMetadataV0, OuterEventMetadataV0, PlainTypeLatest, PlainTypeV0, PlainTypeV10, PlainTypeV11, PlainTypeV12, PlainTypeV2, PlainTypeV3, PlainTypeV4, PlainTypeV5, PlainTypeV6, PlainTypeV7, PlainTypeV8, PlainTypeV9, RuntimeModuleMetadataV0, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV6, StorageEntryMetadataV7, StorageEntryMetadataV8, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV6, StorageEntryModifierV7, StorageEntryModifierV8, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV6, StorageEntryTypeV7, StorageEntryTypeV8, StorageEntryTypeV9, StorageFunctionMetadataV0, StorageFunctionMetadataV1, StorageFunctionMetadataV2, StorageFunctionMetadataV3, StorageFunctionMetadataV4, StorageFunctionMetadataV5, StorageFunctionModifierV0, StorageFunctionModifierV1, StorageFunctionModifierV2, StorageFunctionModifierV3, StorageFunctionModifierV4, StorageFunctionModifierV5, StorageFunctionTypeV0, StorageFunctionTypeV1, StorageFunctionTypeV2, StorageFunctionTypeV3, StorageFunctionTypeV4, StorageFunctionTypeV5, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV4, StorageHasherV5, StorageHasherV6, StorageHasherV7, StorageHasherV8, StorageHasherV9, StorageMetadataLatest, StorageMetadataV0, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV7, StorageMetadataV8, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
import { StorageKind } from '@polkadot/types/interfaces/offchain';
import { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
import { AbridgedCandidateReceipt, AttestedCandidate, AuctionIndex, Bidder, CandidateCommitments, CandidateReceipt, CollatorId, CollatorSignature, DoubleVoteReport, DownwardMessage, GlobalValidationSchedule, HeadData, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, LeasePeriod, LeasePeriodOf, LocalValidationData, NewBidder, ParaId, ParaInfo, ParaPastCodeMeta, ParaScheduling, ParachainDispatchOrigin, ParachainProposal, RegisteredParachainInfo, RelayChainBlockNumber, Remark, Retriable, Scheduling, SigningContext, SlotRange, Statement, SubId, UpwardMessage, ValidationCode, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, WinningData, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
@@ -1840,6 +1840,54 @@ declare module '@polkadot/types/types/registry' {
StorageHasherV11: StorageHasherV11;
'Option<StorageHasherV11>': Option<StorageHasherV11>;
'Vec<StorageHasherV11>': Vec<StorageHasherV11>;
DoubleMapTypeV12: DoubleMapTypeV12;
'Option<DoubleMapTypeV12>': Option<DoubleMapTypeV12>;
'Vec<DoubleMapTypeV12>': Vec<DoubleMapTypeV12>;
ErrorMetadataV12: ErrorMetadataV12;
'Option<ErrorMetadataV12>': Option<ErrorMetadataV12>;
'Vec<ErrorMetadataV12>': Vec<ErrorMetadataV12>;
EventMetadataV12: EventMetadataV12;
'Option<EventMetadataV12>': Option<EventMetadataV12>;
'Vec<EventMetadataV12>': Vec<EventMetadataV12>;
ExtrinsicMetadataV12: ExtrinsicMetadataV12;
'Option<ExtrinsicMetadataV12>': Option<ExtrinsicMetadataV12>;
'Vec<ExtrinsicMetadataV12>': Vec<ExtrinsicMetadataV12>;
FunctionArgumentMetadataV12: FunctionArgumentMetadataV12;
'Option<FunctionArgumentMetadataV12>': Option<FunctionArgumentMetadataV12>;
'Vec<FunctionArgumentMetadataV12>': Vec<FunctionArgumentMetadataV12>;
FunctionMetadataV12: FunctionMetadataV12;
'Option<FunctionMetadataV12>': Option<FunctionMetadataV12>;
'Vec<FunctionMetadataV12>': Vec<FunctionMetadataV12>;
MapTypeV12: MapTypeV12;
'Option<MapTypeV12>': Option<MapTypeV12>;
'Vec<MapTypeV12>': Vec<MapTypeV12>;
MetadataV12: MetadataV12;
'Option<MetadataV12>': Option<MetadataV12>;
'Vec<MetadataV12>': Vec<MetadataV12>;
ModuleConstantMetadataV12: ModuleConstantMetadataV12;
'Option<ModuleConstantMetadataV12>': Option<ModuleConstantMetadataV12>;
'Vec<ModuleConstantMetadataV12>': Vec<ModuleConstantMetadataV12>;
ModuleMetadataV12: ModuleMetadataV12;
'Option<ModuleMetadataV12>': Option<ModuleMetadataV12>;
'Vec<ModuleMetadataV12>': Vec<ModuleMetadataV12>;
PlainTypeV12: PlainTypeV12;
'Option<PlainTypeV12>': Option<PlainTypeV12>;
'Vec<PlainTypeV12>': Vec<PlainTypeV12>;
StorageEntryModifierV12: StorageEntryModifierV12;
'Option<StorageEntryModifierV12>': Option<StorageEntryModifierV12>;
'Vec<StorageEntryModifierV12>': Vec<StorageEntryModifierV12>;
StorageEntryMetadataV12: StorageEntryMetadataV12;
'Option<StorageEntryMetadataV12>': Option<StorageEntryMetadataV12>;
'Vec<StorageEntryMetadataV12>': Vec<StorageEntryMetadataV12>;
StorageEntryTypeV12: StorageEntryTypeV12;
'Option<StorageEntryTypeV12>': Option<StorageEntryTypeV12>;
'Vec<StorageEntryTypeV12>': Vec<StorageEntryTypeV12>;
StorageMetadataV12: StorageMetadataV12;
'Option<StorageMetadataV12>': Option<StorageMetadataV12>;
'Vec<StorageMetadataV12>': Vec<StorageMetadataV12>;
StorageHasherV12: StorageHasherV12;
'Option<StorageHasherV12>': Option<StorageHasherV12>;
'Vec<StorageHasherV12>': Vec<StorageHasherV12>;
DoubleMapTypeLatest: DoubleMapTypeLatest;
'Option<DoubleMapTypeLatest>': Option<DoubleMapTypeLatest>;
'Vec<DoubleMapTypeLatest>': Vec<DoubleMapTypeLatest>;
+8 -2
View File
@@ -22,7 +22,10 @@ import { getTypeDef } from './getTypeDef';
// create error mapping from metadata
function decorateErrors (_: Registry, metadata: RegistryMetadata, metadataErrors: Record<string, RegistryError>): void {
// decorate the errors
metadata.asLatest.modules.forEach((section, sectionIndex): void => {
metadata.asLatest.modules.forEach((section, _sectionIndex): void => {
const sectionIndex = section.index.eqn(255)
? _sectionIndex
: section.index.toNumber();
const sectionName = stringCamelCase(section.name.toString());
section.errors.forEach(({ documentation, name }, index): void => {
@@ -43,7 +46,10 @@ function decorateEvents (registry: Registry, metadata: RegistryMetadata, metadat
// decorate the events
metadata.asLatest.modules
.filter(({ events }): boolean => events.isSome)
.forEach((section, sectionIndex): void => {
.forEach((section, _sectionIndex): void => {
const sectionIndex = section.index.eqn(255)
? _sectionIndex
: section.index.toNumber();
const sectionName = stringCamelCase(section.name.toString());
section.events.unwrap().forEach((meta, methodIndex): void => {
@@ -508,22 +508,51 @@ export default {
_enum: AllHashers
},
// v12
DoubleMapTypeV12: 'DoubleMapTypeV11',
ErrorMetadataV12: 'ErrorMetadataV11',
EventMetadataV12: 'EventMetadataV11',
ExtrinsicMetadataV12: 'ExtrinsicMetadataV11',
FunctionArgumentMetadataV12: 'FunctionArgumentMetadataV11',
FunctionMetadataV12: 'FunctionMetadataV11',
MapTypeV12: 'MapTypeV11',
MetadataV12: {
modules: 'Vec<ModuleMetadataV12>',
extrinsic: 'ExtrinsicMetadataV12'
},
ModuleConstantMetadataV12: 'ModuleConstantMetadataV11',
ModuleMetadataV12: {
name: 'Text',
storage: 'Option<StorageMetadataV12>',
calls: 'Option<Vec<FunctionMetadataV12>>',
events: 'Option<Vec<EventMetadataV12>>',
constants: 'Vec<ModuleConstantMetadataV12>',
errors: 'Vec<ErrorMetadataV12>',
index: 'u8'
},
PlainTypeV12: 'Type',
StorageEntryModifierV12: 'StorageEntryModifierV11',
StorageEntryMetadataV12: 'StorageEntryMetadataV11',
StorageEntryTypeV12: 'StorageEntryTypeV11',
StorageMetadataV12: 'StorageMetadataV11',
StorageHasherV12: 'StorageHasherV11',
// This always maps to the latest
DoubleMapTypeLatest: 'DoubleMapTypeV11',
EventMetadataLatest: 'EventMetadataV11',
ExtrinsicMetadataLatest: 'ExtrinsicMetadataV11',
FunctionArgumentMetadataLatest: 'FunctionArgumentMetadataV11',
FunctionMetadataLatest: 'FunctionMetadataV11',
MapTypeLatest: 'MapTypeV11',
MetadataLatest: 'MetadataV11',
ModuleConstantMetadataLatest: 'ModuleConstantMetadataV11',
ModuleMetadataLatest: 'ModuleMetadataV11',
PlainTypeLatest: 'PlainTypeV11',
StorageEntryMetadataLatest: 'StorageEntryMetadataV11',
StorageEntryModifierLatest: 'StorageEntryModifierV11',
StorageEntryTypeLatest: 'StorageEntryTypeV11',
StorageMetadataLatest: 'StorageMetadataV11',
StorageHasher: 'StorageHasherV11',
DoubleMapTypeLatest: 'DoubleMapTypeV12',
EventMetadataLatest: 'EventMetadataV12',
ExtrinsicMetadataLatest: 'ExtrinsicMetadataV12',
FunctionArgumentMetadataLatest: 'FunctionArgumentMetadataV12',
FunctionMetadataLatest: 'FunctionMetadataV12',
MapTypeLatest: 'MapTypeV12',
MetadataLatest: 'MetadataV12',
ModuleConstantMetadataLatest: 'ModuleConstantMetadataV12',
ModuleMetadataLatest: 'ModuleMetadataV12',
PlainTypeLatest: 'PlainTypeV12',
StorageEntryMetadataLatest: 'StorageEntryMetadataV12',
StorageEntryModifierLatest: 'StorageEntryModifierV12',
StorageEntryTypeLatest: 'StorageEntryTypeV12',
StorageMetadataLatest: 'StorageMetadataV12',
StorageHasher: 'StorageHasherV12',
// the enum containing all the mappings
MetadataAll: {
@@ -539,7 +568,8 @@ export default {
V8: 'MetadataV8',
V9: 'MetadataV9',
V10: 'MetadataV10',
V11: 'MetadataV11'
V11: 'MetadataV11',
V12: 'MetadataV12'
}
}
}
+76 -15
View File
@@ -12,7 +12,7 @@ export interface CallMetadataV0 extends Struct {
}
/** @name DoubleMapTypeLatest */
export interface DoubleMapTypeLatest extends DoubleMapTypeV11 {}
export interface DoubleMapTypeLatest extends DoubleMapTypeV12 {}
/** @name DoubleMapTypeV10 */
export interface DoubleMapTypeV10 extends Struct {
@@ -32,6 +32,9 @@ export interface DoubleMapTypeV11 extends Struct {
readonly key2Hasher: StorageHasherV11;
}
/** @name DoubleMapTypeV12 */
export interface DoubleMapTypeV12 extends DoubleMapTypeV11 {}
/** @name DoubleMapTypeV3 */
export interface DoubleMapTypeV3 extends Struct {
readonly key1: Type;
@@ -76,6 +79,9 @@ export interface ErrorMetadataV10 extends ErrorMetadataV9 {}
/** @name ErrorMetadataV11 */
export interface ErrorMetadataV11 extends ErrorMetadataV10 {}
/** @name ErrorMetadataV12 */
export interface ErrorMetadataV12 extends ErrorMetadataV11 {}
/** @name ErrorMetadataV8 */
export interface ErrorMetadataV8 extends Struct {
readonly name: Text;
@@ -86,7 +92,7 @@ export interface ErrorMetadataV8 extends Struct {
export interface ErrorMetadataV9 extends ErrorMetadataV8 {}
/** @name EventMetadataLatest */
export interface EventMetadataLatest extends EventMetadataV11 {}
export interface EventMetadataLatest extends EventMetadataV12 {}
/** @name EventMetadataV0 */
export interface EventMetadataV0 extends Struct {
@@ -104,6 +110,9 @@ export interface EventMetadataV10 extends EventMetadataV9 {}
/** @name EventMetadataV11 */
export interface EventMetadataV11 extends EventMetadataV10 {}
/** @name EventMetadataV12 */
export interface EventMetadataV12 extends EventMetadataV11 {}
/** @name EventMetadataV2 */
export interface EventMetadataV2 extends EventMetadataV1 {}
@@ -129,7 +138,7 @@ export interface EventMetadataV8 extends EventMetadataV7 {}
export interface EventMetadataV9 extends EventMetadataV8 {}
/** @name ExtrinsicMetadataLatest */
export interface ExtrinsicMetadataLatest extends ExtrinsicMetadataV11 {}
export interface ExtrinsicMetadataLatest extends ExtrinsicMetadataV12 {}
/** @name ExtrinsicMetadataV11 */
export interface ExtrinsicMetadataV11 extends Struct {
@@ -137,8 +146,11 @@ export interface ExtrinsicMetadataV11 extends Struct {
readonly signedExtensions: Vec<Text>;
}
/** @name ExtrinsicMetadataV12 */
export interface ExtrinsicMetadataV12 extends ExtrinsicMetadataV11 {}
/** @name FunctionArgumentMetadataLatest */
export interface FunctionArgumentMetadataLatest extends FunctionArgumentMetadataV11 {}
export interface FunctionArgumentMetadataLatest extends FunctionArgumentMetadataV12 {}
/** @name FunctionArgumentMetadataV0 */
export interface FunctionArgumentMetadataV0 extends Struct {
@@ -155,6 +167,9 @@ export interface FunctionArgumentMetadataV10 extends FunctionArgumentMetadataV9
/** @name FunctionArgumentMetadataV11 */
export interface FunctionArgumentMetadataV11 extends FunctionArgumentMetadataV10 {}
/** @name FunctionArgumentMetadataV12 */
export interface FunctionArgumentMetadataV12 extends FunctionArgumentMetadataV11 {}
/** @name FunctionArgumentMetadataV2 */
export interface FunctionArgumentMetadataV2 extends FunctionArgumentMetadataV1 {}
@@ -180,7 +195,7 @@ export interface FunctionArgumentMetadataV8 extends FunctionArgumentMetadataV7 {
export interface FunctionArgumentMetadataV9 extends FunctionArgumentMetadataV8 {}
/** @name FunctionMetadataLatest */
export interface FunctionMetadataLatest extends FunctionMetadataV11 {}
export interface FunctionMetadataLatest extends FunctionMetadataV12 {}
/** @name FunctionMetadataV0 */
export interface FunctionMetadataV0 extends Struct {
@@ -203,6 +218,9 @@ export interface FunctionMetadataV10 extends FunctionMetadataV9 {}
/** @name FunctionMetadataV11 */
export interface FunctionMetadataV11 extends FunctionMetadataV10 {}
/** @name FunctionMetadataV12 */
export interface FunctionMetadataV12 extends FunctionMetadataV11 {}
/** @name FunctionMetadataV2 */
export interface FunctionMetadataV2 extends FunctionMetadataV1 {}
@@ -228,7 +246,7 @@ export interface FunctionMetadataV8 extends FunctionMetadataV7 {}
export interface FunctionMetadataV9 extends FunctionMetadataV8 {}
/** @name MapTypeLatest */
export interface MapTypeLatest extends MapTypeV11 {}
export interface MapTypeLatest extends MapTypeV12 {}
/** @name MapTypeV0 */
export interface MapTypeV0 extends Struct {
@@ -252,6 +270,9 @@ export interface MapTypeV11 extends Struct {
readonly linked: bool;
}
/** @name MapTypeV12 */
export interface MapTypeV12 extends MapTypeV11 {}
/** @name MapTypeV2 */
export interface MapTypeV2 extends Struct {
readonly key: Type;
@@ -311,10 +332,12 @@ export interface MetadataAll extends Enum {
readonly asV10: MetadataV10;
readonly isV11: boolean;
readonly asV11: MetadataV11;
readonly isV12: boolean;
readonly asV12: MetadataV12;
}
/** @name MetadataLatest */
export interface MetadataLatest extends MetadataV11 {}
export interface MetadataLatest extends MetadataV12 {}
/** @name MetadataV0 */
export interface MetadataV0 extends Struct {
@@ -339,6 +362,12 @@ export interface MetadataV11 extends Struct {
readonly extrinsic: ExtrinsicMetadataV11;
}
/** @name MetadataV12 */
export interface MetadataV12 extends Struct {
readonly modules: Vec<ModuleMetadataV12>;
readonly extrinsic: ExtrinsicMetadataV12;
}
/** @name MetadataV2 */
export interface MetadataV2 extends Struct {
readonly modules: Vec<ModuleMetadataV2>;
@@ -378,7 +407,7 @@ export interface MetadataV8 extends Struct {
export interface MetadataV9 extends MetadataV8 {}
/** @name ModuleConstantMetadataLatest */
export interface ModuleConstantMetadataLatest extends ModuleConstantMetadataV11 {}
export interface ModuleConstantMetadataLatest extends ModuleConstantMetadataV12 {}
/** @name ModuleConstantMetadataV10 */
export interface ModuleConstantMetadataV10 extends ModuleConstantMetadataV9 {}
@@ -386,6 +415,9 @@ export interface ModuleConstantMetadataV10 extends ModuleConstantMetadataV9 {}
/** @name ModuleConstantMetadataV11 */
export interface ModuleConstantMetadataV11 extends ModuleConstantMetadataV10 {}
/** @name ModuleConstantMetadataV12 */
export interface ModuleConstantMetadataV12 extends ModuleConstantMetadataV11 {}
/** @name ModuleConstantMetadataV6 */
export interface ModuleConstantMetadataV6 extends Struct {
readonly name: Text;
@@ -404,7 +436,7 @@ export interface ModuleConstantMetadataV8 extends ModuleConstantMetadataV7 {}
export interface ModuleConstantMetadataV9 extends ModuleConstantMetadataV8 {}
/** @name ModuleMetadataLatest */
export interface ModuleMetadataLatest extends ModuleMetadataV11 {}
export interface ModuleMetadataLatest extends ModuleMetadataV12 {}
/** @name ModuleMetadataV0 */
export interface ModuleMetadataV0 extends Struct {
@@ -441,6 +473,17 @@ export interface ModuleMetadataV11 extends Struct {
readonly errors: Vec<ErrorMetadataV11>;
}
/** @name ModuleMetadataV12 */
export interface ModuleMetadataV12 extends Struct {
readonly name: Text;
readonly storage: Option<StorageMetadataV12>;
readonly calls: Option<Vec<FunctionMetadataV12>>;
readonly events: Option<Vec<EventMetadataV12>>;
readonly constants: Vec<ModuleConstantMetadataV12>;
readonly errors: Vec<ErrorMetadataV12>;
readonly index: u8;
}
/** @name ModuleMetadataV2 */
export interface ModuleMetadataV2 extends Struct {
readonly name: Text;
@@ -535,7 +578,7 @@ export interface OuterEventMetadataV0 extends Struct {
}
/** @name PlainTypeLatest */
export interface PlainTypeLatest extends PlainTypeV11 {}
export interface PlainTypeLatest extends PlainTypeV12 {}
/** @name PlainTypeV0 */
export interface PlainTypeV0 extends Type {}
@@ -546,6 +589,9 @@ export interface PlainTypeV10 extends Type {}
/** @name PlainTypeV11 */
export interface PlainTypeV11 extends Type {}
/** @name PlainTypeV12 */
export interface PlainTypeV12 extends Type {}
/** @name PlainTypeV2 */
export interface PlainTypeV2 extends Type {}
@@ -578,7 +624,7 @@ export interface RuntimeModuleMetadataV0 extends Struct {
}
/** @name StorageEntryMetadataLatest */
export interface StorageEntryMetadataLatest extends StorageEntryMetadataV11 {}
export interface StorageEntryMetadataLatest extends StorageEntryMetadataV12 {}
/** @name StorageEntryMetadataV10 */
export interface StorageEntryMetadataV10 extends Struct {
@@ -598,6 +644,9 @@ export interface StorageEntryMetadataV11 extends Struct {
readonly documentation: Vec<Text>;
}
/** @name StorageEntryMetadataV12 */
export interface StorageEntryMetadataV12 extends StorageEntryMetadataV11 {}
/** @name StorageEntryMetadataV6 */
export interface StorageEntryMetadataV6 extends StorageFunctionMetadataV5 {}
@@ -611,7 +660,7 @@ export interface StorageEntryMetadataV8 extends StorageEntryMetadataV7 {}
export interface StorageEntryMetadataV9 extends StorageEntryMetadataV8 {}
/** @name StorageEntryModifierLatest */
export interface StorageEntryModifierLatest extends StorageEntryModifierV11 {}
export interface StorageEntryModifierLatest extends StorageEntryModifierV12 {}
/** @name StorageEntryModifierV10 */
export interface StorageEntryModifierV10 extends StorageEntryModifierV9 {}
@@ -619,6 +668,9 @@ export interface StorageEntryModifierV10 extends StorageEntryModifierV9 {}
/** @name StorageEntryModifierV11 */
export interface StorageEntryModifierV11 extends StorageEntryModifierV10 {}
/** @name StorageEntryModifierV12 */
export interface StorageEntryModifierV12 extends StorageEntryModifierV11 {}
/** @name StorageEntryModifierV6 */
export interface StorageEntryModifierV6 extends StorageFunctionModifierV5 {}
@@ -632,7 +684,7 @@ export interface StorageEntryModifierV8 extends StorageEntryModifierV7 {}
export interface StorageEntryModifierV9 extends StorageEntryModifierV8 {}
/** @name StorageEntryTypeLatest */
export interface StorageEntryTypeLatest extends StorageEntryTypeV11 {}
export interface StorageEntryTypeLatest extends StorageEntryTypeV12 {}
/** @name StorageEntryTypeV10 */
export interface StorageEntryTypeV10 extends Enum {
@@ -654,6 +706,9 @@ export interface StorageEntryTypeV11 extends Enum {
readonly asDoubleMap: DoubleMapTypeV11;
}
/** @name StorageEntryTypeV12 */
export interface StorageEntryTypeV12 extends StorageEntryTypeV11 {}
/** @name StorageEntryTypeV6 */
export interface StorageEntryTypeV6 extends StorageFunctionTypeV5 {}
@@ -786,7 +841,7 @@ export interface StorageFunctionTypeV5 extends Enum {
}
/** @name StorageHasher */
export interface StorageHasher extends StorageHasherV11 {}
export interface StorageHasher extends StorageHasherV12 {}
/** @name StorageHasherV10 */
export interface StorageHasherV10 extends Enum {
@@ -809,6 +864,9 @@ export interface StorageHasherV11 extends Enum {
readonly isIdentity: boolean;
}
/** @name StorageHasherV12 */
export interface StorageHasherV12 extends StorageHasherV11 {}
/** @name StorageHasherV4 */
export interface StorageHasherV4 extends Enum {
readonly isBlake2128: boolean;
@@ -834,7 +892,7 @@ export interface StorageHasherV8 extends StorageHasherV7 {}
export interface StorageHasherV9 extends StorageHasherV8 {}
/** @name StorageMetadataLatest */
export interface StorageMetadataLatest extends StorageMetadataV11 {}
export interface StorageMetadataLatest extends StorageMetadataV12 {}
/** @name StorageMetadataV0 */
export interface StorageMetadataV0 extends Struct {
@@ -854,6 +912,9 @@ export interface StorageMetadataV11 extends Struct {
readonly items: Vec<StorageEntryMetadataV11>;
}
/** @name StorageMetadataV12 */
export interface StorageMetadataV12 extends StorageMetadataV11 {}
/** @name StorageMetadataV7 */
export interface StorageMetadataV7 extends Struct {
readonly prefix: Text;
+2
View File
@@ -5,6 +5,7 @@
import type BN from 'bn.js';
import { ChainProperties } from '../interfaces/system';
import { u8 } from '../primitive';
import { CallFunction } from './calls';
import { Codec, Constructor } from './codec';
import { DefinitionRpc, DefinitionRpcSub } from './definitions';
@@ -79,6 +80,7 @@ export interface RegistryMetadataModule {
calls: RegistryMetadataCalls;
errors: RegistryMetadataErrors;
events: RegistryMetadataEvents;
index: u8;
name: RegistryMetadataText;
}