diff --git a/packages/types/src/interfaces/metadata/types.ts b/packages/types/src/interfaces/metadata/types.ts index 09b083d147..1b6f8d06f2 100644 --- a/packages/types/src/interfaces/metadata/types.ts +++ b/packages/types/src/interfaces/metadata/types.ts @@ -132,7 +132,7 @@ export interface FunctionMetadataV14 extends Struct { readonly fields: Vec; readonly index: u8; readonly docs: Vec; - readonly args: Vec; + readonly args: Vec; } /** @name FunctionMetadataV9 */ diff --git a/packages/types/src/interfaces/metadata/v14.ts b/packages/types/src/interfaces/metadata/v14.ts index b3cf4e507f..7154b232bf 100644 --- a/packages/types/src/interfaces/metadata/v14.ts +++ b/packages/types/src/interfaces/metadata/v14.ts @@ -28,7 +28,7 @@ export const v14: DefinitionsTypes = { FunctionArgumentMetadataV14: 'FunctionArgumentMetadataV13', FunctionMetadataV14: { ...SiVariant, - args: 'Vec' + args: 'Vec' }, // V14 diff --git a/packages/types/src/metadata/decorate/extrinsics/index.ts b/packages/types/src/metadata/decorate/extrinsics/index.ts index b373abf4c5..095d5cd27a 100644 --- a/packages/types/src/metadata/decorate/extrinsics/index.ts +++ b/packages/types/src/metadata/decorate/extrinsics/index.ts @@ -7,6 +7,7 @@ import type { Extrinsics, ModuleExtrinsics } from '../types'; import { stringCamelCase } from '@polkadot/util'; +import { getSiName } from '../../util'; import { createUnchecked } from './createUnchecked'; /** @internal */ @@ -25,7 +26,7 @@ export function decorateExtrinsics (registry: Registry, { lookup, pallets }: Met ...variant, args: variant.fields.map(({ name, type }, index) => ({ name: stringCamelCase(name.unwrapOr(`param${index}`)), - type: lookup.getTypeDef(type).type + type: getSiName(lookup, type) })) }); diff --git a/packages/types/src/metadata/util/getSiName.ts b/packages/types/src/metadata/util/getSiName.ts new file mode 100644 index 0000000000..e68caae6db --- /dev/null +++ b/packages/types/src/metadata/util/getSiName.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2021 @polkadot/types authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { PortableRegistry, SiLookupTypeId } from '../../interfaces'; + +export function getSiName (lookup: PortableRegistry, type: SiLookupTypeId): string { + const typeDef = lookup.getTypeDef(type); + + return typeDef.lookupName || typeDef.type; +} diff --git a/packages/types/src/metadata/util/index.ts b/packages/types/src/metadata/util/index.ts index 1b2c3c08a0..9d2efcea27 100644 --- a/packages/types/src/metadata/util/index.ts +++ b/packages/types/src/metadata/util/index.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 export { flattenUniq } from './flattenUniq'; +export { getSiName } from './getSiName'; export { getUniqTypes } from './getUniqTypes'; export { toCallsOnly } from './toCallsOnly'; export { validateTypes } from './validateTypes'; diff --git a/packages/types/src/primitive/StorageKey.ts b/packages/types/src/primitive/StorageKey.ts index 31855be2f2..0a3e14c7b4 100644 --- a/packages/types/src/primitive/StorageKey.ts +++ b/packages/types/src/primitive/StorageKey.ts @@ -9,6 +9,7 @@ import type { StorageEntry } from './types'; import { assert, isFunction, isString, isU8a } from '@polkadot/util'; +import { getSiName } from '../metadata/util'; import { Bytes } from './Bytes'; interface Decoded { @@ -42,8 +43,7 @@ export function unwrapStorageSi (type: StorageEntryTypeLatest): SiLookupTypeId { /** @internal */ export function unwrapStorageType (registry: Registry, type: StorageEntryTypeLatest, isOptional?: boolean): keyof InterfaceTypes { - const typeDef = registry.lookup.getTypeDef(unwrapStorageSi(type)); - const outputType = typeDef.lookupName || typeDef.type; + const outputType = getSiName(registry.lookup, unwrapStorageSi(type)); return isOptional ? `Option<${outputType}>` as keyof InterfaceTypes