From e9ad88d50ed976abe46b7088e947b3ffd76068ea Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 21 Jan 2021 22:37:37 +0100 Subject: [PATCH] Register all types for error generation (#3088) * Register all types for error generation * type for ExtraTypes --- packages/typegen/src/fromChain.ts | 2 +- packages/typegen/src/generate/consts.ts | 6 ++++-- packages/typegen/src/generate/errors.ts | 9 +++++++-- packages/typegen/src/generate/events.ts | 6 ++++-- packages/typegen/src/generate/query.ts | 7 ++++--- packages/typegen/src/generate/rpc.ts | 7 ++++--- packages/typegen/src/generate/tx.ts | 7 ++++--- packages/typegen/src/generate/types.ts | 4 ++++ 8 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 packages/typegen/src/generate/types.ts diff --git a/packages/typegen/src/fromChain.ts b/packages/typegen/src/fromChain.ts index eff1e2bbf4..8dac16540a 100644 --- a/packages/typegen/src/fromChain.ts +++ b/packages/typegen/src/fromChain.ts @@ -19,7 +19,7 @@ function generate (metaHex: string, pkg: string | undefined, output: string, isS : {}; generateDefaultConsts(path.join(process.cwd(), output, 'augment-api-consts.ts'), metaHex, extraTypes, isStrict); - generateDefaultErrors(path.join(process.cwd(), output, 'augment-api-errors.ts'), metaHex, isStrict); + generateDefaultErrors(path.join(process.cwd(), output, 'augment-api-errors.ts'), metaHex, extraTypes, isStrict); generateDefaultEvents(path.join(process.cwd(), output, 'augment-api-events.ts'), metaHex, extraTypes, isStrict); generateDefaultQuery(path.join(process.cwd(), output, 'augment-api-query.ts'), metaHex, extraTypes, isStrict); generateDefaultRpc(path.join(process.cwd(), output, 'augment-api-rpc.ts'), extraTypes); diff --git a/packages/typegen/src/generate/consts.ts b/packages/typegen/src/generate/consts.ts index 5b00970024..b559d82030 100644 --- a/packages/typegen/src/generate/consts.ts +++ b/packages/typegen/src/generate/consts.ts @@ -1,6 +1,8 @@ // Copyright 2017-2021 @polkadot/typegen authors & contributors // SPDX-License-Identifier: Apache-2.0 +import type { ExtraTypes } from './types'; + import Handlebars from 'handlebars'; import { Metadata } from '@polkadot/metadata/Metadata'; @@ -15,7 +17,7 @@ const template = readTemplate('consts'); const generateForMetaTemplate = Handlebars.compile(template); /** @internal */ -function generateForMeta (meta: Metadata, dest: string, extraTypes: Record }>>, isStrict: boolean): void { +function generateForMeta (meta: Metadata, dest: string, extraTypes: ExtraTypes, isStrict: boolean): void { writeFile(dest, (): string => { const allTypes: Record }>> = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; const imports = createImports(allTypes); @@ -74,7 +76,7 @@ function generateForMeta (meta: Metadata, dest: string, extraTypes: Record }>> = {}, isStrict = false): void { +export function generateDefaultConsts (dest = 'packages/api/src/augment/consts.ts', data = staticData, extraTypes: ExtraTypes = {}, isStrict = false): void { const registry = new TypeRegistry(); registerDefinitions(registry, extraTypes); diff --git a/packages/typegen/src/generate/errors.ts b/packages/typegen/src/generate/errors.ts index 1660b12ac8..b22b1b98e8 100644 --- a/packages/typegen/src/generate/errors.ts +++ b/packages/typegen/src/generate/errors.ts @@ -1,6 +1,8 @@ // Copyright 2017-2021 @polkadot/typegen authors & contributors // SPDX-License-Identifier: Apache-2.0 +import type { ExtraTypes } from './types'; + import Handlebars from 'handlebars'; import { Metadata } from '@polkadot/metadata/Metadata'; @@ -8,7 +10,7 @@ import staticData from '@polkadot/metadata/static'; import { TypeRegistry } from '@polkadot/types/create'; import { stringCamelCase } from '@polkadot/util'; -import { compareName, createImports, readTemplate, writeFile } from '../util'; +import { compareName, createImports, readTemplate, registerDefinitions, writeFile } from '../util'; const template = readTemplate('errors'); const generateForMetaTemplate = Handlebars.compile(template); @@ -50,8 +52,11 @@ function generateForMeta (meta: Metadata, dest: string, isStrict: boolean): void // Call `generateForMeta()` with current static metadata /** @internal */ -export function generateDefaultErrors (dest = 'packages/api/src/augment/errors.ts', data = staticData, isStrict = false): void { +export function generateDefaultErrors (dest = 'packages/api/src/augment/errors.ts', data = staticData, extraTypes: ExtraTypes = {}, isStrict = false): void { const registry = new TypeRegistry(); + + registerDefinitions(registry, extraTypes); + const metadata = new Metadata(registry, data); registry.setMetadata(metadata); diff --git a/packages/typegen/src/generate/events.ts b/packages/typegen/src/generate/events.ts index 4ee9dc4ad3..e6a77d41f5 100644 --- a/packages/typegen/src/generate/events.ts +++ b/packages/typegen/src/generate/events.ts @@ -1,6 +1,8 @@ // Copyright 2017-2021 @polkadot/typegen authors & contributors // SPDX-License-Identifier: Apache-2.0 +import type { ExtraTypes } from './types'; + import Handlebars from 'handlebars'; import { Metadata } from '@polkadot/metadata/Metadata'; @@ -15,7 +17,7 @@ const template = readTemplate('events'); const generateForMetaTemplate = Handlebars.compile(template); /** @internal */ -function generateForMeta (meta: Metadata, dest: string, extraTypes: Record }>>, isStrict: boolean): void { +function generateForMeta (meta: Metadata, dest: string, extraTypes: ExtraTypes, isStrict: boolean): void { writeFile(dest, (): string => { const allTypes: Record }>> = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; const imports = createImports(allTypes); @@ -67,7 +69,7 @@ function generateForMeta (meta: Metadata, dest: string, extraTypes: Record }>> = {}, isStrict = false): void { +export function generateDefaultEvents (dest = 'packages/api/src/augment/events.ts', data = staticData, extraTypes: ExtraTypes = {}, isStrict = false): void { const registry = new TypeRegistry(); registerDefinitions(registry, extraTypes); diff --git a/packages/typegen/src/generate/query.ts b/packages/typegen/src/generate/query.ts index becd3b9574..56fee8c54c 100644 --- a/packages/typegen/src/generate/query.ts +++ b/packages/typegen/src/generate/query.ts @@ -3,6 +3,7 @@ import type { StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata'; import type { Registry } from '@polkadot/types/types'; +import type { ExtraTypes } from './types'; import Handlebars from 'handlebars'; @@ -67,9 +68,9 @@ const template = readTemplate('query'); const generateForMetaTemplate = Handlebars.compile(template); /** @internal */ -function generateForMeta (registry: Registry, meta: Metadata, dest: string, extraTypes: Record }>>, isStrict: boolean): void { +function generateForMeta (registry: Registry, meta: Metadata, dest: string, extraTypes: ExtraTypes, isStrict: boolean): void { writeFile(dest, (): string => { - const allTypes: Record }>> = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; + const allTypes: ExtraTypes = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; const imports = createImports(allTypes); const allDefs = Object.entries(allTypes).reduce((defs, [path, obj]) => { return Object.entries(obj).reduce((defs, [key, value]) => ({ ...defs, [`${path}/${key}`]: value }), defs); @@ -130,7 +131,7 @@ function generateForMeta (registry: Registry, meta: Metadata, dest: string, extr // Call `generateForMeta()` with current static metadata /** @internal */ -export function generateDefaultQuery (dest = 'packages/api/src/augment/query.ts', data = staticData, extraTypes: Record }>> = {}, isStrict = false): void { +export function generateDefaultQuery (dest = 'packages/api/src/augment/query.ts', data = staticData, extraTypes: ExtraTypes = {}, isStrict = false): void { const registry = new TypeRegistry(); registerDefinitions(registry, extraTypes); diff --git a/packages/typegen/src/generate/rpc.ts b/packages/typegen/src/generate/rpc.ts index 28716bde8a..8f3bf5a894 100644 --- a/packages/typegen/src/generate/rpc.ts +++ b/packages/typegen/src/generate/rpc.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { Definitions } from '@polkadot/types/types'; +import type { ExtraTypes } from './types'; import Handlebars from 'handlebars'; @@ -29,9 +30,9 @@ const template = readTemplate('rpc'); const generateRpcTypesTemplate = Handlebars.compile(template); /** @internal */ -export function generateRpcTypes (registry: TypeRegistry, importDefinitions: Record, dest: string, extraTypes: Record }>> = {}): void { +export function generateRpcTypes (registry: TypeRegistry, importDefinitions: Record, dest: string, extraTypes: ExtraTypes = {}): void { writeFile(dest, (): string => { - const allTypes: Record }>> = { '@polkadot/types/interfaces': importDefinitions, ...extraTypes }; + const allTypes: ExtraTypes = { '@polkadot/types/interfaces': importDefinitions, ...extraTypes }; const imports = createImports(allTypes); const definitions = imports.definitions as Record; const allDefs = Object.entries(allTypes).reduce((defs, [path, obj]) => { @@ -141,7 +142,7 @@ export function generateRpcTypes (registry: TypeRegistry, importDefinitions: Rec }); } -export function generateDefaultRpc (dest = 'packages/api/src/augment/rpc.ts', extraTypes: Record }>> = {}): void { +export function generateDefaultRpc (dest = 'packages/api/src/augment/rpc.ts', extraTypes: ExtraTypes = {}): void { const registry = new TypeRegistry(); registerDefinitions(registry, extraTypes); diff --git a/packages/typegen/src/generate/tx.ts b/packages/typegen/src/generate/tx.ts index aa77d33d86..35f1e9ea44 100644 --- a/packages/typegen/src/generate/tx.ts +++ b/packages/typegen/src/generate/tx.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { Registry } from '@polkadot/types/types'; +import type { ExtraTypes } from './types'; import Handlebars from 'handlebars'; @@ -28,9 +29,9 @@ const template = readTemplate('tx'); const generateForMetaTemplate = Handlebars.compile(template); /** @internal */ -function generateForMeta (registry: Registry, meta: Metadata, dest: string, extraTypes: Record }>>, isStrict: boolean): void { +function generateForMeta (registry: Registry, meta: Metadata, dest: string, extraTypes: ExtraTypes, isStrict: boolean): void { writeFile(dest, (): string => { - const allTypes: Record }>> = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; + const allTypes: ExtraTypes = { '@polkadot/types/interfaces': defaultDefs, ...extraTypes }; const imports = createImports(allTypes); const allDefs = Object.entries(allTypes).reduce((defs, [path, obj]) => { return Object.entries(obj).reduce((defs, [key, value]) => ({ ...defs, [`${path}/${key}`]: value }), defs); @@ -93,7 +94,7 @@ function generateForMeta (registry: Registry, meta: Metadata, dest: string, extr // Call `generateForMeta()` with current static metadata /** @internal */ -export function generateDefaultTx (dest = 'packages/api/src/augment/tx.ts', data = staticData, extraTypes: Record }>> = {}, isStrict = false): void { +export function generateDefaultTx (dest = 'packages/api/src/augment/tx.ts', data = staticData, extraTypes: ExtraTypes = {}, isStrict = false): void { const registry = new TypeRegistry(); registerDefinitions(registry, extraTypes); diff --git a/packages/typegen/src/generate/types.ts b/packages/typegen/src/generate/types.ts new file mode 100644 index 0000000000..2a6a92e528 --- /dev/null +++ b/packages/typegen/src/generate/types.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2021 @polkadot/typegen authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export type ExtraTypes = Record }>>;