diff --git a/CHANGELOG.md b/CHANGELOG.md index ca06c2785d..796bd3ebab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## master + +Changes: + +- Adjust typegen formatting for metadata documentation + + ## 6.0.2 Sep 18, 2021 Upgrade priority: Low. Recommended for all users on 6.0.1, especially those using `api.query.substrate.*` calls diff --git a/packages/typegen/src/generate/lookup.ts b/packages/typegen/src/generate/lookup.ts index ee715f8fd0..bb52a67628 100644 --- a/packages/typegen/src/generate/lookup.ts +++ b/packages/typegen/src/generate/lookup.ts @@ -198,7 +198,8 @@ function generateLookupDefs (registry: Registry, filtered: [PortableType, TypeDe ].map(([n, t]) => `${n}: ${t}`), docs }; - }) + }), + headerType: 'defs' }); }); } diff --git a/packages/typegen/src/generate/query.ts b/packages/typegen/src/generate/query.ts index 862ba562c0..4c4685b4c6 100644 --- a/packages/typegen/src/generate/query.ts +++ b/packages/typegen/src/generate/query.ts @@ -21,27 +21,6 @@ import { ModuleTypes } from '../util/imports'; function entrySignature (lookup: PortableRegistry, allDefs: Record, registry: Registry, storageEntry: StorageEntryMetadataLatest, imports: TypeImports): [boolean, string, string, string] { const outputType = lookup.getTypeDef(unwrapStorageSi(storageEntry.type)); - // else if (storageEntry.type.isMap) { - // const map = storageEntry.type.asMap; - // const keyDef = lookup.getTypeDef(map.key); - // const valDef = lookup.getTypeDef(map.value); - - // // Find similar types of the `key` type - // const similarTypes = getSimilarTypes(registry, allDefs, keyDef.lookupName || keyDef.type, imports); - - // setImports(allDefs, imports, [ - // ...similarTypes, - // valDef.lookupName || valDef.type - // ]); - - // return [ - // storageEntry.modifier.isOptional, - // formatType(registry, allDefs, keyDef.lookupName || keyDef.type, imports), - // `arg: ${similarTypes.join(' | ')}`, - // formatType(registry, allDefs, outputType, imports) - // ]; - // } - if (storageEntry.type.isPlain) { const typeDef = lookup.getTypeDef(storageEntry.type.asPlain); diff --git a/packages/typegen/src/metadataMd.ts b/packages/typegen/src/metadataMd.ts index b3146cfea6..fdbbb7a811 100644 --- a/packages/typegen/src/metadataMd.ts +++ b/packages/typegen/src/metadataMd.ts @@ -1,7 +1,7 @@ // Copyright 2017-2021 @polkadot/typegen authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { MetadataLatest } from '@polkadot/types/interfaces/metadata'; +import type { MetadataLatest, PortableRegistry, SiLookupTypeId } from '@polkadot/types/interfaces'; import type { Codec, DefinitionRpcParam } from '@polkadot/types/types'; import fs from 'fs'; @@ -118,6 +118,12 @@ function sortByName (a: T, b: T): number { return a.name.toString().toUpperCase().localeCompare(b.name.toString().toUpperCase()); } +function getSiName (lookup: PortableRegistry, type: SiLookupTypeId): string { + const typeDef = lookup.getTypeDef(type); + + return typeDef.lookupName || typeDef.type; +} + /** @internal */ function addRpc (): string { const sections = Object @@ -185,7 +191,7 @@ function addConstants ({ lookup, pallets }: MetadataLatest): string { return { interface: '`' + `api.consts.${sectionName}.${methodName}` + '`', - name: `${methodName}: ` + '`' + lookup.getTypeDef(type).type + '`', + name: `${methodName}: ` + '`' + getSiName(lookup, type) + '`', ...(docs.length && { summary: docs }) }; }), @@ -214,9 +220,11 @@ function addStorage ({ lookup, pallets, registry }: MetadataLatest): string { if (func.type.isMap) { const { hashers, key } = func.type.asMap; - arg = hashers.length === 1 - ? ('`' + key.toString() + '`') - : ('`' + lookup.getSiType(key).def.asTuple.map((t) => t).join(', ') + '`'); + arg = '`' + ( + hashers.length === 1 + ? getSiName(lookup, key) + : lookup.getSiType(key).def.asTuple.map((t) => getSiName(lookup, t)).join(', ') + ) + '`'; } const methodName = stringLowerFirst(func.name); @@ -238,7 +246,7 @@ function addStorage ({ lookup, pallets, registry }: MetadataLatest): string { description: 'These are well-known keys that are always available to the runtime implementation of any Substrate-based network.', items: Object.entries(substrate).map(([name, { meta }]) => { const arg = meta.type.isMap - ? ('`' + lookup.getTypeDef(meta.type.asMap.key).type + '`') + ? ('`' + getSiName(lookup, meta.type.asMap.key) + '`') : ''; const methodName = stringLowerFirst(name); const outputType = unwrapStorageType(registry, meta.type, meta.modifier.isOptional); @@ -270,7 +278,9 @@ function addExtrinsics ({ lookup, pallets }: MetadataLatest): string { .sort(sortByName) .map(({ docs, fields, name }, index) => { const methodName = stringCamelCase(name); - const args = fields.map(({ name, type }) => `${name.isSome ? name.toString() : `param${index}`}: ` + '`' + lookup.getTypeDef(type).type + '`').join(', '); + const args = fields.map(({ name, type }) => + `${name.isSome ? name.toString() : `param${index}`}: ` + '`' + getSiName(lookup, type) + '`' + ).join(', '); return { interface: '`' + `api.tx.${sectionName}.${methodName}` + '`', @@ -297,7 +307,9 @@ function addEvents ({ lookup, pallets }: MetadataLatest): string { .sort(sortByName) .map(({ docs, fields, name }) => { const methodName = name.toString(); - const args = fields.map(({ type }) => '`' + lookup.getTypeDef(type).type + '`').join(', '); + const args = fields.map(({ type }) => + '`' + getSiName(lookup, type) + '`' + ).join(', '); return { interface: '`' + `api.events.${stringCamelCase(meta.name)}.${methodName}.is` + '`', diff --git a/packages/types/src/augment/lookup/definitions.ts b/packages/types/src/augment/lookup/definitions.ts index 903816f3c5..7490f98215 100644 --- a/packages/types/src/augment/lookup/definitions.ts +++ b/packages/types/src/augment/lookup/definitions.ts @@ -10,8 +10,10 @@ import substrate from './substrate'; export default { rpc: {}, types: { + // Not 100% sure it is relevant, however the order here is the same + // as exposed in the typegen lookup order + ...substrate, ...polkadot, - ...kusama, - ...substrate + ...kusama } } as Definitions; diff --git a/packages/types/src/augment/lookup/kusama.ts b/packages/types/src/augment/lookup/kusama.ts index 52abd11d5e..d2f50c097e 100644 --- a/packages/types/src/augment/lookup/kusama.ts +++ b/packages/types/src/augment/lookup/kusama.ts @@ -1,4 +1,4 @@ -// Auto-generated via `yarn polkadot-types-from-`, do not edit +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ /* eslint-disable sort-keys */ diff --git a/packages/types/src/augment/lookup/polkadot.ts b/packages/types/src/augment/lookup/polkadot.ts index ee8c3ea967..ca3da6ec6b 100644 --- a/packages/types/src/augment/lookup/polkadot.ts +++ b/packages/types/src/augment/lookup/polkadot.ts @@ -1,4 +1,4 @@ -// Auto-generated via `yarn polkadot-types-from-`, do not edit +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ /* eslint-disable sort-keys */ diff --git a/packages/types/src/augment/lookup/substrate.ts b/packages/types/src/augment/lookup/substrate.ts index a0eea18a2f..0d0393856c 100644 --- a/packages/types/src/augment/lookup/substrate.ts +++ b/packages/types/src/augment/lookup/substrate.ts @@ -1,4 +1,4 @@ -// Auto-generated via `yarn polkadot-types-from-`, do not edit +// Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ /* eslint-disable sort-keys */ diff --git a/packages/types/src/primitive/StorageKey.ts b/packages/types/src/primitive/StorageKey.ts index 949e4e18d2..31855be2f2 100644 --- a/packages/types/src/primitive/StorageKey.ts +++ b/packages/types/src/primitive/StorageKey.ts @@ -42,7 +42,8 @@ export function unwrapStorageSi (type: StorageEntryTypeLatest): SiLookupTypeId { /** @internal */ export function unwrapStorageType (registry: Registry, type: StorageEntryTypeLatest, isOptional?: boolean): keyof InterfaceTypes { - const outputType = registry.lookup.getTypeDef(unwrapStorageSi(type)).type; + const typeDef = registry.lookup.getTypeDef(unwrapStorageSi(type)); + const outputType = typeDef.lookupName || typeDef.type; return isOptional ? `Option<${outputType}>` as keyof InterfaceTypes