diff --git a/docs/examples/promise/07_make_transfer_with_allowed_block_permissions_only/index.js b/docs/examples/promise/07_make_transfer_with_allowed_block_permissions_only/index.js index f4d97e1c70..825dbf476c 100644 --- a/docs/examples/promise/07_make_transfer_with_allowed_block_permissions_only/index.js +++ b/docs/examples/promise/07_make_transfer_with_allowed_block_permissions_only/index.js @@ -19,7 +19,7 @@ async function main () { const alice = keyring.addFromUri('//Alice'); // Get nonce for account - const [{ nonce } = await api.query.system.account(alice.address); + const { nonce } = await api.query.system.account(alice.address); // Get current block const signedBlock = await api.rpc.chain.getBlock(); diff --git a/packages/api-contract/src/ContractRegistry.ts b/packages/api-contract/src/ContractRegistry.ts index 9db739530c..d5173cd038 100644 --- a/packages/api-contract/src/ContractRegistry.ts +++ b/packages/api-contract/src/ContractRegistry.ts @@ -5,7 +5,7 @@ import { CodecArg, Constructor, Registry, TypeDef } from '@polkadot/types/types'; import { ContractABIArgBasePre, ContractABIContract, ContractABIContractPre, ContractABIEvent, ContractABIEventPre, ContractABIFn, ContractABIFnArg, ContractABIMessage, ContractABIMessageBase, ContractABIMessagePre, ContractABI, ContractABIMessageCommon, ContractABIPre, ContractABIRange, ContractABIRangePre, ContractABIStorage, ContractABIStorageLayout, ContractABIStorageLayoutPre, ContractABIStoragePre, ContractABIStorageStruct, ContractABIStorageStructPre, ContractABITypePre } from './types'; -import { Compact, u32, createClass, createType, encodeType } from '@polkadot/types'; +import { Compact, u32, createClass, encodeType } from '@polkadot/types'; import { assert, hexToU8a, isNumber, isString, isNull, isObject, isUndefined, stringCamelCase, isHex, hexToNumber } from '@polkadot/util'; import MetaRegistry from './MetaRegistry'; @@ -14,16 +14,16 @@ import MetaRegistry from './MetaRegistry'; // just catch everything (since this is now non-standard for u32 anyway) function parseSelector (registry: Registry, fnname: string, input: ContractABIMessageCommon['selector']): u32 { if (isNumber(input)) { - return createType(registry, 'u32', input); + return registry.createType('u32', input); } else if (isHex(input)) { - return createType(registry, 'u32', hexToU8a(input)); + return registry.createType('u32', hexToU8a(input)); } else if (typeof input === 'string') { try { const array = JSON.parse(input); assert(array.length === 4, `${fnname}: Invalid selector length`); - return createType(registry, 'u32', Uint8Array.from( + return registry.createType('u32', Uint8Array.from( // the as number[] is here to pacify TS, it doesn't quite know how to handle the cb (array as number[]).map((value: string | number): number => isHex(value) diff --git a/packages/api-contract/src/base/Blueprint.ts b/packages/api-contract/src/base/Blueprint.ts index e0890526d4..3b7149994b 100644 --- a/packages/api-contract/src/base/Blueprint.ts +++ b/packages/api-contract/src/base/Blueprint.ts @@ -11,7 +11,6 @@ import BN from 'bn.js'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { SubmittableResult } from '@polkadot/api'; -import { createType } from '@polkadot/types'; import { assert } from '@polkadot/util'; import Abi from '../Abi'; @@ -41,7 +40,7 @@ export default class Blueprint extends BaseWithTx, abi: ContractABIPre | Abi, decorateMethod: DecorateMethod, codeHash: string | Hash) { super(api, abi, decorateMethod); - this.codeHash = createType(this.registry, 'Hash', codeHash); + this.codeHash = this.registry.createType('Hash', codeHash); } public deployContract (constructorIndex = 0, endowment: number | BN, maxGas: number | BN, ...params: any[]): BlueprintCreate { diff --git a/packages/api-contract/src/base/Contract.ts b/packages/api-contract/src/base/Contract.ts index b4c5969bfd..95d9d3b1f6 100644 --- a/packages/api-contract/src/base/Contract.ts +++ b/packages/api-contract/src/base/Contract.ts @@ -11,7 +11,6 @@ import BN from 'bn.js'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { SubmittableResult } from '@polkadot/api'; -import { createType } from '@polkadot/types'; import Abi from '../Abi'; import { formatData } from '../util'; import { BaseWithTxAndRpcCall } from './util'; @@ -44,7 +43,7 @@ export default class Contract extends BaseWithTxAndRpc as === 'rpc' && this.hasRpcContractsCall ? (account: IKeyringPair | string | AccountId | Address): ContractCallResult<'rpc'> => { return this.rpcContractsCall( - createType(this.registry, 'ContractCallRequest', { + this.registry.createType('ContractCallRequest', { origin: account, dest: this.address.toString(), value, @@ -54,7 +53,7 @@ export default class Contract extends BaseWithTxAndRpc ) .pipe( map((result: ContractExecResult): ContractCallOutcome => - this.createOutcome(result, createType(this.registry, 'AccountId', account), def, params) + this.createOutcome(result, this.registry.createType('AccountId', account), def, params) ) ); } @@ -75,7 +74,7 @@ export default class Contract extends BaseWithTxAndRpc output = message.returnType ? formatData(this.registry, data, message.returnType) - : createType(this.registry, 'Raw', data); + : this.registry.createType('Raw', data); } return { @@ -92,6 +91,6 @@ export default class Contract extends BaseWithTxAndRpc constructor (api: ApiObject, abi: ContractABIPre | Abi, decorateMethod: DecorateMethod, address: string | AccountId | Address) { super(api, abi, decorateMethod); - this.address = createType(this.registry, 'Address', address); + this.address = this.registry.createType('Address', address); } } diff --git a/packages/api-derive/src/type/ReferendumInfoExtended.ts b/packages/api-derive/src/type/ReferendumInfoExtended.ts index 986a3c1af7..a08dff00ed 100644 --- a/packages/api-derive/src/type/ReferendumInfoExtended.ts +++ b/packages/api-derive/src/type/ReferendumInfoExtended.ts @@ -7,7 +7,7 @@ import { AnyJson, Constructor, Registry } from '@polkadot/types/types'; import BN from 'bn.js'; import democracyTypes from '@polkadot/types/interfaces/democracy/definitions'; -import { Struct, createType } from '@polkadot/types'; +import { Struct } from '@polkadot/types'; // We can ignore the properties, added via Struct.with const _ReferendumInfo: Constructor = Struct.with(democracyTypes.types.ReferendumInfo as any) as any; @@ -25,7 +25,7 @@ export default class ReferendumInfoExtended extends _ReferendumInfo { this.#index = value instanceof ReferendumInfoExtended ? value.index - : createType(registry, 'ReferendumIndex', index); + : registry.createType('ReferendumIndex', index); } /** diff --git a/packages/api-derive/src/util/approvalFlagToBools.spec.ts b/packages/api-derive/src/util/approvalFlagToBools.spec.ts index 5bd2faa6a7..1e4386e19f 100644 --- a/packages/api-derive/src/util/approvalFlagToBools.spec.ts +++ b/packages/api-derive/src/util/approvalFlagToBools.spec.ts @@ -4,7 +4,7 @@ import { ApprovalFlag } from '@polkadot/types/interfaces'; -import { createType, TypeRegistry } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types'; import { approvalFlagsToBools } from './approvalFlagsToBools'; @@ -20,7 +20,7 @@ describe('approvalFlagsToBools', (): void => { it('translates a single input', (): void => { expect( approvalFlagsToBools([ - createType(registry, 'ApprovalFlag', 0b1010) + registry.createType('ApprovalFlag', 0b1010) ]) ).toEqual([false, true, false, true]); }); @@ -28,8 +28,8 @@ describe('approvalFlagsToBools', (): void => { it('translates multiple inputs', (): void => { expect( approvalFlagsToBools([ - createType(registry, 'ApprovalFlag', 0b0000), - createType(registry, 'ApprovalFlag', 0b1100) + registry.createType('ApprovalFlag', 0b0000), + registry.createType('ApprovalFlag', 0b1100) ]) ).toEqual([false, false, false, true, true]); }); diff --git a/packages/api/src/checkTypes.manual.ts b/packages/api/src/checkTypes.manual.ts index a53496d584..81c952c0aa 100644 --- a/packages/api/src/checkTypes.manual.ts +++ b/packages/api/src/checkTypes.manual.ts @@ -10,7 +10,7 @@ import { IExtrinsic, IMethod } from '@polkadot/types/types'; import { ApiPromise } from '@polkadot/api'; import { HeaderExtended } from '@polkadot/api-derive'; import testKeyring, { TestKeyringMap } from '@polkadot/keyring/testingPairs'; -import { createType, createTypeUnsafe, TypeRegistry } from '@polkadot/types'; +import { createTypeUnsafe, TypeRegistry } from '@polkadot/types'; import { SubmittableResult } from './'; @@ -77,10 +77,10 @@ async function rpc (api: ApiPromise): Promise { function types (api: ApiPromise): void { // check correct types with `createType` - const balance = createType(registry, 'Balance', 2); - const gas = createType(registry, 'Gas', 2); - const compact = createType(registry, 'Compact', 2); - // const random = createType(registry, 'RandomType', 2); // This one should deliberately show a TS error + const balance = registry.createType('Balance', 2); + const gas = registry.createType('Gas', 2); + const compact = registry.createType('Compact', 2); + // const random = registry.createType('RandomType', 2); // This one should deliberately show a TS error const gasUnsafe = createTypeUnsafe(registry, 'Gas', [2]); const overriddenUnsafe = createTypeUnsafe
(registry, 'Gas', [2]); diff --git a/packages/api/src/promise/Api.spec.ts b/packages/api/src/promise/Api.spec.ts index 117fa76b85..1db666a9e1 100644 --- a/packages/api/src/promise/Api.spec.ts +++ b/packages/api/src/promise/Api.spec.ts @@ -7,7 +7,7 @@ import { ApiOptions } from '../types'; import createPair from '@polkadot/keyring/pair'; import testKeyring from '@polkadot/keyring/testing'; import Mock from '@polkadot/rpc-provider/mock/index'; -import { createType, TypeRegistry } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types'; import { hexToU8a } from '@polkadot/util'; import { SingleAccountSigner } from '../../test/util'; @@ -33,7 +33,7 @@ describe('ApiPromise', (): void => { describe('initialization', (): void => { it('Create API instance with metadata map and makes the runtime, rpc, state & extrinsics available', async (): Promise => { const rpcData = await provider.send('state_getMetadata', []); - const genesisHash = createType(registry, 'Hash', await provider.send('chain_getBlockHash', [])).toHex(); + const genesisHash = registry.createType('Hash', await provider.send('chain_getBlockHash', [])).toHex(); const specVersion = 0; const metadata: any = {}; const key = `${genesisHash}-${specVersion}`; diff --git a/packages/api/src/submittable/createClass.ts b/packages/api/src/submittable/createClass.ts index 7f1f814999..8022923480 100644 --- a/packages/api/src/submittable/createClass.ts +++ b/packages/api/src/submittable/createClass.ts @@ -10,7 +10,7 @@ import { AddressOrPair, SignerOptions, SubmittableExtrinsic, SubmittablePaymentR import { Observable, combineLatest, of } from 'rxjs'; import { first, map, mapTo, mergeMap, switchMap, tap } from 'rxjs/operators'; -import { createType, ClassOf } from '@polkadot/types'; +import { ClassOf } from '@polkadot/types'; import { assert, isBn, isFunction, isNumber, isUndefined } from '@polkadot/util'; import { filterEvents, isKeyringPair } from '../util'; @@ -133,7 +133,7 @@ export default function createClass ({ api, apiType, ? api.derive.balances.account(address).pipe( map(({ accountNonce }): Index => accountNonce) ) - : of(createType(this.registry, 'Index', options.nonce)), + : of(this.registry.createType('Index', options.nonce)), // if we have an era provided already or eraLength is <= 0 (immortal) // don't get the latest block, just pass null, handle in mergeMap (isUndefined(options.era) || (isNumber(options.era) && options.era > 0)) @@ -156,7 +156,7 @@ export default function createClass ({ api, apiType, return this.#makeSignOptions(options, { blockHash: header.hash, - era: createType(this.registry, 'ExtrinsicEra', { + era: this.registry.createType('ExtrinsicEra', { current: header.number, period: options.era || DEFAULT_MORTAL_LENGTH }), @@ -265,7 +265,7 @@ export default function createClass ({ api, apiType, assert(signer, 'No signer specified, either via api.setSigner or via sign options'); - const payload = createType(this.registry, 'SignerPayload', { + const payload = this.registry.createType('SignerPayload', { ...options, address, method: this.method, diff --git a/packages/api/test/util/SingleAccountSigner.ts b/packages/api/test/util/SingleAccountSigner.ts index 56507f45f2..81d1867b05 100644 --- a/packages/api/test/util/SingleAccountSigner.ts +++ b/packages/api/test/util/SingleAccountSigner.ts @@ -6,7 +6,6 @@ import { Signer, SignerResult } from '@polkadot/api/types'; import { KeyringPair } from '@polkadot/keyring/types'; import { Registry, SignerPayloadJSON, SignerPayloadRaw } from '@polkadot/types/types'; -import { createType } from '@polkadot/types'; import { hexToU8a, u8aToHex } from '@polkadot/util'; let id = 0; @@ -31,7 +30,7 @@ export class SingleAccountSigner implements Signer { return new Promise((resolve): void => { setTimeout((): void => { - const signed = createType(this.registry, 'ExtrinsicPayload', payload, { version: payload.version }).sign(this.keyringPair); + const signed = this.registry.createType('ExtrinsicPayload', payload, { version: payload.version }).sign(this.keyringPair); resolve({ id: ++id, diff --git a/packages/metadata/src/Decorated/Decorated.spec.ts b/packages/metadata/src/Decorated/Decorated.spec.ts index cdefdabe47..9ff055740f 100644 --- a/packages/metadata/src/Decorated/Decorated.spec.ts +++ b/packages/metadata/src/Decorated/Decorated.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { ClassOf, createType, TypeRegistry } from '@polkadot/types/create'; +import { ClassOf, TypeRegistry } from '@polkadot/types/create'; import { u8aToHex } from '@polkadot/util'; import Decorated from './Decorated'; @@ -24,7 +24,7 @@ describe('Decorated', () => { it('should return properly-encoded transactions', (): void => { expect( - createType(registry, 'Extrinsic', decorated.tx.timestamp.set([10101])).toU8a() + registry.createType('Extrinsic', decorated.tx.timestamp.set([10101])).toU8a() ).toEqual( new Uint8Array([ // length (encoded) diff --git a/packages/metadata/src/Decorated/extrinsics/fromMetadata/createUnchecked.ts b/packages/metadata/src/Decorated/extrinsics/fromMetadata/createUnchecked.ts index 35d4c17c32..03ad625267 100644 --- a/packages/metadata/src/Decorated/extrinsics/fromMetadata/createUnchecked.ts +++ b/packages/metadata/src/Decorated/extrinsics/fromMetadata/createUnchecked.ts @@ -5,9 +5,6 @@ import { Call } from '@polkadot/types/interfaces'; import { AnyJson, CallFunction, Registry, RegistryMetadataCall } from '@polkadot/types/types'; -// we do a direct import here to remove all circular dependencies (importing from -// /types, /types/codec or /types/create makes all hell break loose) -import { createType } from '@polkadot/types/create/createType'; import { assert, stringCamelCase } from '@polkadot/util'; /** @internal */ @@ -21,7 +18,7 @@ export default function createDescriptor (registry: Registry, section: string, s `Extrinsic ${section}.${funcName} expects ${expectedArgs.length.valueOf()} arguments, got ${args.length}.` ); - return createType(registry, 'Call', { + return registry.createType('Call', { args, callIndex }, callMetadata); diff --git a/packages/metadata/src/Decorated/extrinsics/fromMetadata/fromMetadata.spec.ts b/packages/metadata/src/Decorated/extrinsics/fromMetadata/fromMetadata.spec.ts index c359c884ce..d11d45126e 100644 --- a/packages/metadata/src/Decorated/extrinsics/fromMetadata/fromMetadata.spec.ts +++ b/packages/metadata/src/Decorated/extrinsics/fromMetadata/fromMetadata.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, Metadata, TypeRegistry } from '@polkadot/types'; +import { Metadata, TypeRegistry } from '@polkadot/types'; import json from '../../../Metadata/static'; import fromMetadata from '.'; @@ -23,7 +23,7 @@ describe('fromMetadata', (): void => { it('should return properly-encoded transactions', (): void => { expect( - createType(registry, 'Extrinsic', newExtrinsics.timestamp.set([10101])).toU8a() + registry.createType('Extrinsic', newExtrinsics.timestamp.set([10101])).toU8a() ).toEqual( new Uint8Array([ // length (encoded) diff --git a/packages/metadata/src/Decorated/extrinsics/index.spec.ts b/packages/metadata/src/Decorated/extrinsics/index.spec.ts index d5bb58bffb..b263cdcd18 100644 --- a/packages/metadata/src/Decorated/extrinsics/index.spec.ts +++ b/packages/metadata/src/Decorated/extrinsics/index.spec.ts @@ -4,7 +4,7 @@ import BN from 'bn.js'; import testingPairs from '@polkadot/keyring/testingPairs'; -import { createType, Metadata, TypeRegistry } from '@polkadot/types'; +import { Metadata, TypeRegistry } from '@polkadot/types'; import metadataStatic from '../../Metadata/static'; import fromMetadata from './fromMetadata'; @@ -17,7 +17,7 @@ const extrinsics = fromMetadata(registry, metadata); describe('extrinsics', (): void => { it('encodes an actual transfer (actual data)', (): void => { expect( - createType(registry, 'Extrinsic', + registry.createType('Extrinsic', extrinsics.balances.transfer(keyring.bob.publicKey, 6969) ).sign(keyring.alice, { blockHash: '0xec7afaf1cca720ce88c1d1b689d81f0583cc15a97d621cf046dd9abf605ef22f', diff --git a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.spec.ts b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.spec.ts index 899c527dc7..dbecdb7b31 100644 --- a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.spec.ts +++ b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, Text, TypeRegistry } from '@polkadot/types'; +import { Text, TypeRegistry } from '@polkadot/types'; import { StorageEntry } from '@polkadot/types/primitive/StorageKey'; import { stringToU8a, u8aConcat, u8aToHex } from '@polkadot/util'; @@ -82,11 +82,11 @@ describe('createFunction', (): void => { type: { isDoubleMap: true, asDoubleMap: { - hasher: createType(registry, 'StorageHasher', 'Blake2_256'), + hasher: registry.createType('StorageHasher', 'Blake2_256'), key1: new Text(registry, 'AccountId'), key2: new Text(registry, 'AccountId'), value: new Text(registry, 'Balance'), - key2Hasher: createType(registry, 'StorageHasher', 'Twox128') + key2Hasher: registry.createType('StorageHasher', 'Twox128') } } } as any @@ -114,11 +114,11 @@ describe('createFunction', (): void => { type: { isDoubleMap: true, asDoubleMap: { - hasher: createType(registry, 'StorageHasher', 'Blake2_256'), + hasher: registry.createType('StorageHasher', 'Blake2_256'), key1: new Text(registry, 'Null'), key2: new Text(registry, 'Hash'), value: new Text(registry, 'Vec<(BlockNumber,EventIndex)>'), - key2Hasher: createType(registry, 'StorageHasher', 'Blake2_256') + key2Hasher: registry.createType('StorageHasher', 'Blake2_256') } } } as any @@ -139,11 +139,11 @@ describe('createFunction', (): void => { type: { isDoubleMap: true, asDoubleMap: { - hasher: createType(registry, 'StorageHasher', 'Twox64Concat'), + hasher: registry.createType('StorageHasher', 'Twox64Concat'), key1: new Text(registry, 'Bytes'), key2: new Text(registry, 'AccountId'), value: new Text(registry, 'SessionKeys5'), - key2Hasher: createType(registry, 'StorageHasher', 'Blake2_256') + key2Hasher: registry.createType('StorageHasher', 'Blake2_256') } } } as any diff --git a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts index b9b947b857..d55d1b58f4 100644 --- a/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts +++ b/packages/metadata/src/Decorated/storage/fromMetadata/createFunction.ts @@ -7,7 +7,7 @@ import { Codec, Registry } from '@polkadot/types/types'; import BN from 'bn.js'; import { Compact, Raw } from '@polkadot/types/codec'; -import { createType, createTypeUnsafe } from '@polkadot/types/create'; +import { createTypeUnsafe } from '@polkadot/types/create'; import StorageKey, { StorageEntry } from '@polkadot/types/primitive/StorageKey'; import { assert, compactStripLength, isNull, isUndefined, stringLowerFirst, stringToU8a, u8aConcat } from '@polkadot/util'; import { xxhashAsU8a } from '@polkadot/util-crypto'; @@ -149,15 +149,15 @@ function extendHeadMeta (registry: Registry, { meta: { documentation, name, type // metadata with a fallback value using the type of the key, the normal // meta fallback only applies to actual entry values, create one for head - (iterFn as IterFn).meta = createType(registry, 'StorageEntryMetadataLatest', { + (iterFn as IterFn).meta = registry.createType('StorageEntryMetadataLatest', { name, - modifier: createType(registry, 'StorageEntryModifierLatest', 1), // required - type: createType(registry, 'StorageEntryTypeLatest', createType(registry, 'PlainTypeLatest', type.isMap ? type.asMap.key : type.asDoubleMap.key1), 0), - fallback: createType(registry, 'Bytes', createTypeUnsafe(registry, outputType).toHex()), + modifier: registry.createType('StorageEntryModifierLatest', 1), // required + type: registry.createType('StorageEntryTypeLatest', registry.createType('PlainTypeLatest', type.isMap ? type.asMap.key : type.asDoubleMap.key1), 0), + fallback: registry.createType('Bytes', createTypeUnsafe(registry, outputType).toHex()), documentation }); - return createType(registry, 'StorageKey', iterFn, { method, section }); + return registry.createType('StorageKey', iterFn, { method, section }); } // attach the head key hashing for linked maps diff --git a/packages/metadata/src/Decorated/storage/fromMetadata/getHasher.spec.ts b/packages/metadata/src/Decorated/storage/fromMetadata/getHasher.spec.ts index ac78197949..0309a5416a 100644 --- a/packages/metadata/src/Decorated/storage/fromMetadata/getHasher.spec.ts +++ b/packages/metadata/src/Decorated/storage/fromMetadata/getHasher.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types'; import { stringToU8a } from '@polkadot/util'; import { xxhashAsU8a } from '@polkadot/util-crypto'; @@ -13,7 +13,7 @@ describe('getHasher', (): void => { describe('Twox64Concat', (): void => { it('matches the foo test from Rust', (): void => { - const hasher = getHasher(createType(registry, 'StorageHasher', 'Twox64Concat')); + const hasher = getHasher(registry.createType('StorageHasher', 'Twox64Concat')); const hash = hasher('foo'); const xxhash = xxhashAsU8a('foo', 128); diff --git a/packages/metadata/src/Decorated/storage/fromMetadata/substrate.ts b/packages/metadata/src/Decorated/storage/fromMetadata/substrate.ts index 1306b78b62..e3c692b4f3 100644 --- a/packages/metadata/src/Decorated/storage/fromMetadata/substrate.ts +++ b/packages/metadata/src/Decorated/storage/fromMetadata/substrate.ts @@ -6,7 +6,6 @@ import { StorageEntryMetadataLatest } from '@polkadot/types/interfaces/metadata' import { Registry } from '@polkadot/types/types'; import { StorageEntry } from '@polkadot/types/primitive/StorageKey'; -import { createType } from '@polkadot/types/create'; import createFunction from './createFunction'; @@ -21,9 +20,9 @@ function createRuntimeFunction (method: string, key: string, { documentation, ty return (registry: Registry, metaVersion: number): StorageEntry => createFunction(registry, { meta: { - documentation: createType(registry, 'Vec', [documentation]), - modifier: createType(registry, 'StorageEntryModifierLatest', 1), // required - type: createType(registry, 'StorageEntryTypeLatest', type, 0), + documentation: registry.createType('Vec', [documentation]), + modifier: registry.createType('StorageEntryModifierLatest', 1), // required + type: registry.createType('StorageEntryTypeLatest', type, 0), toJSON: (): any => key } as StorageEntryMetadataLatest, method, diff --git a/packages/metadata/src/Metadata/MetadataVersioned.ts b/packages/metadata/src/Metadata/MetadataVersioned.ts index 5651ce2a10..c33689c3fc 100644 --- a/packages/metadata/src/Metadata/MetadataVersioned.ts +++ b/packages/metadata/src/Metadata/MetadataVersioned.ts @@ -5,7 +5,6 @@ import { MetadataAll, MetadataLatest, MetadataV0, MetadataV1, MetadataV2, MetadataV3, MetadataV4, MetadataV5, MetadataV6, MetadataV7, MetadataV8, MetadataV9, MetadataV10, MetadataV11 } from '@polkadot/types/interfaces/metadata'; import { Registry } from '@polkadot/types/types'; -import { createType } from '@polkadot/types/create/createType'; import Struct from '@polkadot/types/codec/Struct'; import { assert } from '@polkadot/util'; @@ -72,7 +71,7 @@ export default class MetadataVersioned extends Struct { public get asCallsOnly (): MetadataVersioned { return new MetadataVersioned(this.registry, { magicNumber: this.magicNumber, - metadata: createType(this.registry, 'MetadataAll', toCallsOnly(this.registry, this.asLatest), this.version) + metadata: this.registry.createType('MetadataAll', toCallsOnly(this.registry, this.asLatest), this.version) }); } diff --git a/packages/rpc-core/src/cached.spec.ts b/packages/rpc-core/src/cached.spec.ts index fbf00ab740..cbf05a5dba 100644 --- a/packages/rpc-core/src/cached.spec.ts +++ b/packages/rpc-core/src/cached.spec.ts @@ -4,7 +4,7 @@ import testingPairs from '@polkadot/keyring/testingPairs'; import MockProvider from '@polkadot/rpc-provider/mock'; -import { createType, TypeRegistry } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types'; import Rpc from '.'; @@ -33,7 +33,7 @@ describe('Cached Observables', (): void => { it('creates a single observable (multiple calls, different arguments that should be cached together)', (): void => { const observable1 = rpc.state.subscribeStorage([keyring.alice.address]); - const observable2 = rpc.state.subscribeStorage([createType(registry, 'AccountId', keyring.alice.address)]); + const observable2 = rpc.state.subscribeStorage([registry.createType('AccountId', keyring.alice.address)]); expect(observable2).toBe(observable1); }); diff --git a/packages/rpc-provider/src/mock/index.ts b/packages/rpc-provider/src/mock/index.ts index 9dc79b557a..919f6342f6 100644 --- a/packages/rpc-provider/src/mock/index.ts +++ b/packages/rpc-provider/src/mock/index.ts @@ -16,7 +16,6 @@ import interfaces from '@polkadot/jsonrpc'; import testKeyring from '@polkadot/keyring/testing'; import rpcHeader from '@polkadot/types/json/Header.004.json'; import rpcSignedBlock from '@polkadot/types/json/SignedBlock.004.immortal.json'; -import { createType } from '@polkadot/types'; import { bnToU8a, logger, u8aToHex } from '@polkadot/util'; import { randomAsU8a } from '@polkadot/util-crypto'; @@ -56,11 +55,11 @@ export default class Mock implements ProviderInterface { private requests: Record any> = { // eslint-disable-next-line @typescript-eslint/no-unused-vars - chain_getBlock: (hash: string): any => createType(this.registry, 'SignedBlock', rpcSignedBlock.result).toJSON(), + chain_getBlock: (hash: string): any => this.registry.createType('SignedBlock', rpcSignedBlock.result).toJSON(), // eslint-disable-next-line @typescript-eslint/no-unused-vars chain_getBlockHash: (blockNumber: number): string => '0x1234', - chain_getHeader: (): any => createType(this.registry, 'Header', rpcHeader.result).toJSON(), - state_getRuntimeVersion: (): string => createType(this.registry, 'RuntimeVersion').toHex(), + chain_getHeader: (): any => this.registry.createType('Header', rpcHeader.result).toJSON(), + state_getRuntimeVersion: (): string => this.registry.createType('RuntimeVersion').toHex(), state_getMetadata: (): string => rpcMetadata, state_getStorage: (storage: MockStateDb, params: any[]): string => u8aToHex(storage[(params[0] as string)]), system_chain: (): string => 'mockChain', @@ -196,7 +195,7 @@ export default class Mock implements ProviderInterface { private makeBlockHeader (): Header { const blockNumber = this.prevNumber.addn(1); - const header = createType(this.registry, 'Header', { + const header = this.registry.createType('Header', { digest: { logs: [] }, diff --git a/packages/types/src/codec/Compact.spec.ts b/packages/types/src/codec/Compact.spec.ts index 61d4e2e77d..43a1808222 100644 --- a/packages/types/src/codec/Compact.spec.ts +++ b/packages/types/src/codec/Compact.spec.ts @@ -4,7 +4,7 @@ import BN from 'bn.js'; -import { createType, ClassOf, TypeRegistry } from '../create'; +import { ClassOf, TypeRegistry } from '../create'; import Moment from './Date'; import U32 from '../primitive/U32'; import Compact from './Compact'; @@ -64,7 +64,7 @@ describe('Compact', (): void => { it('encondes a large balance', (): void => { expect( - Compact.encodeU8a(createType(registry, 'Balance', '0x5af3107a4000')) + Compact.encodeU8a(registry.createType('Balance', '0x5af3107a4000')) ).toEqual( new Uint8Array([ 3 + ((6 - 4) << 2), diff --git a/packages/types/src/codec/Date.ts b/packages/types/src/codec/Date.ts index 1d6d6ab06a..6aa3cf415e 100644 --- a/packages/types/src/codec/Date.ts +++ b/packages/types/src/codec/Date.ts @@ -9,7 +9,6 @@ import BN from 'bn.js'; import { bnToBn, bnToHex, bnToU8a, isString, isU8a, u8aToBn } from '@polkadot/util'; import { blake2AsU8a } from '@polkadot/util-crypto'; -import { createType } from '../create'; import { UIntBitLength } from './AbstractInt'; const BITLENGTH: UIntBitLength = 64; @@ -59,7 +58,7 @@ export default class CodecDate extends Date implements Codec { * @description returns a hash of the contents */ public get hash (): H256 { - return createType(this.registry, 'H256', blake2AsU8a(this.toU8a(), 256)); + return this.registry.createType('H256', blake2AsU8a(this.toU8a(), 256)); } /** diff --git a/packages/types/src/codec/Enum.spec.ts b/packages/types/src/codec/Enum.spec.ts index e9a206b249..06b1e41465 100644 --- a/packages/types/src/codec/Enum.spec.ts +++ b/packages/types/src/codec/Enum.spec.ts @@ -6,7 +6,7 @@ import { Registry } from '../types'; import { u8aToHex } from '@polkadot/util'; -import { TypeRegistry, createType } from '../create'; +import { TypeRegistry } from '../create'; import Null from '../primitive/Null'; import Text from '../primitive/Text'; import U32 from '../primitive/U32'; @@ -340,7 +340,7 @@ describe('Enum', (): void => { it('encodes a single entry correctly (with embedded encoding)', (): void => { const Test = Enum.with({ A: 'Address' }); - const test = new Test(registry, createType(registry, 'AccountId', '0x0001020304050607080910111213141516171819202122232425262728293031'), 0); + const test = new Test(registry, registry.createType('AccountId', '0x0001020304050607080910111213141516171819202122232425262728293031'), 0); expect(test.toHex()).toEqual( '0x' + diff --git a/packages/types/src/codec/Result.spec.ts b/packages/types/src/codec/Result.spec.ts index 4894bbb386..89c200b989 100644 --- a/packages/types/src/codec/Result.spec.ts +++ b/packages/types/src/codec/Result.spec.ts @@ -5,7 +5,7 @@ import { hexToString } from '@polkadot/util'; import { u32, Text } from '../primitive'; -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import Result from './Result'; describe('Result', (): void => { @@ -45,6 +45,6 @@ describe('Result', (): void => { }); it('returns a proper raw typedef rom a built-in', (): void => { - expect(createType(registry, 'DispatchResult').toRawType()).toEqual('Result<(),{"_enum":{"Other":"Null","CannotLookup":"Null","BadOrigin":"Null","Module":"{\\"index\\":\\"u8\\",\\"error\\":\\"u8\\"}"}}>'); + expect(registry.createType('DispatchResult').toRawType()).toEqual('Result<(),{"_enum":{"Other":"Null","CannotLookup":"Null","BadOrigin":"Null","Module":"{\\"index\\":\\"u8\\",\\"error\\":\\"u8\\"}"}}>'); }); }); diff --git a/packages/types/src/create/createType.spec.ts b/packages/types/src/create/createType.spec.ts index a20a1dc785..90a9249d75 100644 --- a/packages/types/src/create/createType.spec.ts +++ b/packages/types/src/create/createType.spec.ts @@ -4,22 +4,22 @@ import Int from '../codec/Int'; import CodecSet from '../codec/Set'; -import { createClass, createType, createTypeUnsafe, ClassOf, TypeRegistry } from '.'; +import { createClass, createTypeUnsafe, ClassOf, TypeRegistry } from '.'; describe('createType', (): void => { const registry = new TypeRegistry(); it('allows creation of a H256 (with proper toRawType)', (): void => { expect( - createType(registry, 'H256').toRawType() + registry.createType('H256').toRawType() ).toEqual('H256'); expect( - createType(registry, 'Hash').toRawType() + registry.createType('Hash').toRawType() ).toEqual('H256'); }); it('allows creation of a Fixed64 (with proper toRawType & instance)', (): void => { - const f64 = createType(registry, 'Fixed64'); + const f64 = registry.createType('Fixed64'); expect(f64.toRawType()).toEqual('Fixed64'); expect(f64.bitLength()).toEqual(64); @@ -109,13 +109,13 @@ describe('createType', (): void => { describe('instanceof', (): void => { it('instanceof should work (primitive type)', (): void => { - const value = createType(registry, 'Balance', 1234); + const value = registry.createType('Balance', 1234); expect(value instanceof ClassOf(registry, 'Balance')).toBe(true); }); it('instanceof should work (srml type)', (): void => { - const value = createType(registry, 'Gas', 1234); + const value = registry.createType('Gas', 1234); const Gas = ClassOf(registry, 'Gas'); expect(value instanceof Gas).toBe(true); @@ -142,14 +142,14 @@ describe('createType', (): void => { }); it('allows for re-registration of a type', (): void => { - const balDef = createType(registry, 'Balance'); + const balDef = registry.createType('Balance'); expect(balDef instanceof ClassOf(registry, 'Balance')); expect(balDef.bitLength()).toEqual(128); registry.register({ Balance: 'u32' }); - const balu32 = createType(registry, 'Balance'); + const balu32 = registry.createType('Balance'); expect(balu32 instanceof ClassOf(registry, 'Balance')); expect(balu32.bitLength()).toEqual(32); diff --git a/packages/types/src/extrinsic/Extrinsic.ts b/packages/types/src/extrinsic/Extrinsic.ts index 82c4a915fb..b9b8e064bf 100644 --- a/packages/types/src/extrinsic/Extrinsic.ts +++ b/packages/types/src/extrinsic/Extrinsic.ts @@ -9,7 +9,7 @@ import { AnyJson, AnyU8a, ArgsDef, Codec, ExtrinsicPayloadValue, IExtrinsic, IKe import { assert, isHex, isU8a, u8aConcat, u8aToHex, u8aToU8a } from '@polkadot/util'; -import { createType, ClassOf } from '../create'; +import { ClassOf } from '../create'; import Base from '../codec/Base'; import Compact from '../codec/Compact'; import { ExtrinsicValueV1 } from './v1/Extrinsic'; @@ -67,7 +67,7 @@ export default class Extrinsic extends Base impl // we cast here since the VERSION definition is incredibly broad - we don't have a // slice for "only add extrinsic types", and more string definitions become unwieldy - return createType(registry, type, value, { isSigned, version }) as ExtrinsicVx; + return registry.createType(type, value, { isSigned, version }) as ExtrinsicVx; } /** @internal */ diff --git a/packages/types/src/extrinsic/ExtrinsicPayload.ts b/packages/types/src/extrinsic/ExtrinsicPayload.ts index 17f1b54982..97862d5e5c 100644 --- a/packages/types/src/extrinsic/ExtrinsicPayload.ts +++ b/packages/types/src/extrinsic/ExtrinsicPayload.ts @@ -8,7 +8,6 @@ import { AnyJson, BareOpts, ExtrinsicPayloadValue, IKeyringPair, InterfaceTypes, import { u8aToHex } from '@polkadot/util'; -import { createType } from '../create'; import Base from '../codec/Base'; import Compact from '../codec/Compact'; import Raw from '../codec/Raw'; @@ -48,7 +47,7 @@ export default class ExtrinsicPayload extends Base { return value.raw; } - return createType(registry, VERSIONS[version] || VERSIONS[0], value, { version }) as ExtrinsicPayloadVx; + return registry.createType(VERSIONS[version] || VERSIONS[0], value, { version }) as ExtrinsicPayloadVx; } /** @@ -70,7 +69,7 @@ export default class ExtrinsicPayload extends Base { */ public get genesisHash (): Hash { // NOTE only v3+ - return (this.raw as ExtrinsicPayloadV3).genesisHash || createType(this.registry, 'Hash'); + return (this.raw as ExtrinsicPayloadV3).genesisHash || this.registry.createType('Hash'); } /** @@ -92,7 +91,7 @@ export default class ExtrinsicPayload extends Base { */ public get specVersion (): u32 { // NOTE only v3+ - return (this.raw as ExtrinsicPayloadV3).specVersion || createType(this.registry, 'u32'); + return (this.raw as ExtrinsicPayloadV3).specVersion || this.registry.createType('u32'); } /** @@ -100,7 +99,7 @@ export default class ExtrinsicPayload extends Base { */ public get tip (): Compact { // NOTE from v2+ - return (this.raw as ExtrinsicPayloadV2).tip || createType(this.registry, 'Compact'); + return (this.raw as ExtrinsicPayloadV2).tip || this.registry.createType('Compact'); } /** diff --git a/packages/types/src/extrinsic/SignerPayload.spec.ts b/packages/types/src/extrinsic/SignerPayload.spec.ts index 65c3219f78..77bf3b1b01 100644 --- a/packages/types/src/extrinsic/SignerPayload.spec.ts +++ b/packages/types/src/extrinsic/SignerPayload.spec.ts @@ -5,7 +5,7 @@ import Metadata from '@polkadot/metadata/Metadata'; import rpcMetadata from '@polkadot/metadata/Metadata/static'; -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import SignerPayload from './SignerPayload'; const registry = new TypeRegistry(); @@ -33,9 +33,9 @@ describe('SignerPayload', (): void => { address: '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFabHE', blockHash: '0xde8f69eeb5e065e18c6950ff708d7e551f68dc9bf59a07c52367c0280f805ec7', blockNumber: '0x231d30', - era: createType(registry, 'ExtrinsicEra', { current: 2301232, period: 200 }), + era: registry.createType('ExtrinsicEra', { current: 2301232, period: 200 }), genesisHash: '0xdcd1346701ca8396496e52aa2785b1748deb6db09551b72159dcb3e08991025b', - method: createType(registry, 'Call', '0x0600ffd7568e5f0a7eda67a82691ff379ac4bba4f9c9b859fe779b5d46363b61ad2db9e56c'), + method: registry.createType('Call', '0x0600ffd7568e5f0a7eda67a82691ff379ac4bba4f9c9b859fe779b5d46363b61ad2db9e56c'), nonce: 0x1234, tip: 0x5678, version: 3 @@ -71,7 +71,7 @@ describe('SignerPayload', (): void => { it('can be used as a feed to ExtrinsicPayload', (): void => { const signer = new SignerPayload(registry, TEST).toPayload(); - const payload = createType(registry, 'ExtrinsicPayload', signer, { version: signer.version }); + const payload = registry.createType('ExtrinsicPayload', signer, { version: signer.version }); expect(payload.era.toHex()).toEqual(TEST.era); expect(payload.method.toHex()).toEqual(TEST.method); diff --git a/packages/types/src/extrinsic/SignerPayload.ts b/packages/types/src/extrinsic/SignerPayload.ts index 004d9fc390..cd4c06eaac 100644 --- a/packages/types/src/extrinsic/SignerPayload.ts +++ b/packages/types/src/extrinsic/SignerPayload.ts @@ -7,7 +7,6 @@ import { Codec, Constructor, ISignerPayload, SignerPayloadJSON, SignerPayloadRaw import { u8aToHex } from '@polkadot/util'; -import { createType } from '../create'; import Compact from '../codec/Compact'; import Struct from '../codec/Struct'; import u8 from '../primitive/U8'; @@ -72,7 +71,7 @@ export default class SignerPayload extends _Payload implements ISignerPayload { public toRaw (): SignerPayloadRaw { const payload = this.toPayload(); // NOTE Explicitly pass the bare flag so the method is encoded un-prefixed (non-decodable, for signing only) - const data = u8aToHex(createType(this.registry, 'ExtrinsicPayload', payload, { version: payload.version }).toU8a({ method: true })); + const data = u8aToHex(this.registry.createType('ExtrinsicPayload', payload, { version: payload.version }).toU8a({ method: true })); return { address: payload.address, diff --git a/packages/types/src/extrinsic/v1/Extrinsic.ts b/packages/types/src/extrinsic/v1/Extrinsic.ts index 1726b3733e..3e992a32b2 100644 --- a/packages/types/src/extrinsic/v1/Extrinsic.ts +++ b/packages/types/src/extrinsic/v1/Extrinsic.ts @@ -9,7 +9,6 @@ import { ExtrinsicOptions } from '../types'; import { isU8a } from '@polkadot/util'; -import { createType } from '../../create'; import Struct from '../../codec/Struct'; export interface ExtrinsicValueV1 { @@ -38,8 +37,8 @@ export default class ExtrinsicV1 extends Struct implements IExtrinsicImpl { return value; } else if (isU8a(value)) { // here we decode manually since we need to pull through the version information - const signature = createType(registry, 'ExtrinsicSignatureV1', value, { isSigned }); - const method = createType(registry, 'Call', value.subarray(signature.encodedLength)); + const signature = registry.createType('ExtrinsicSignatureV1', value, { isSigned }); + const method = registry.createType('Call', value.subarray(signature.encodedLength)); return { method, diff --git a/packages/types/src/extrinsic/v1/ExtrinsicSignature.ts b/packages/types/src/extrinsic/v1/ExtrinsicSignature.ts index d5b00c7d7c..de7adcde38 100644 --- a/packages/types/src/extrinsic/v1/ExtrinsicSignature.ts +++ b/packages/types/src/extrinsic/v1/ExtrinsicSignature.ts @@ -7,7 +7,6 @@ import { Address, Balance, Call, Index } from '../../interfaces/runtime'; import { ExtrinsicPayloadValue, IExtrinsicSignature, IKeyringPair, Registry, SignatureOptions } from '../../types'; import { ExtrinsicSignatureOptions } from '../types'; -import { createType } from '../../create'; import Compact from '../../codec/Compact'; import Struct from '../../codec/Struct'; import { EMPTY_U8A, IMMORTAL_ERA } from '../constants'; @@ -94,7 +93,7 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi * @description Forwards compat */ public get tip (): Compact { - return createType(this.registry, 'Compact', 0); + return this.registry.createType('Compact', 0); } private injectSignature (signer: Address, signature: Signature, { era, nonce }: ExtrinsicPayloadV1): IExtrinsicSignature { @@ -111,8 +110,8 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi */ public addSignature (signer: Address | Uint8Array | string, signature: Uint8Array | string, payload: ExtrinsicPayloadValue | Uint8Array | string): IExtrinsicSignature { return this.injectSignature( - createType(this.registry, 'Address', signer), - createType(this.registry, 'Signature', signature), + this.registry.createType('Address', signer), + this.registry.createType('Signature', signature), new ExtrinsicPayloadV1(this.registry, payload) ); } @@ -136,9 +135,9 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi * @description Generate a payload and applies the signature from a keypair */ public sign (method: Call, account: IKeyringPair, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', account.publicKey); + const signer = this.registry.createType('Address', account.publicKey); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', payload.sign(account)); + const signature = this.registry.createType('Signature', payload.sign(account)); return this.injectSignature(signer, signature, payload); } @@ -147,9 +146,9 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi * @description Generate a payload and applies a fake signature */ public signFake (method: Call, address: Address | Uint8Array | string, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', address); + const signer = this.registry.createType('Address', address); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', new Uint8Array(64).fill(0x42)); + const signature = this.registry.createType('Signature', new Uint8Array(64).fill(0x42)); return this.injectSignature(signer, signature, payload); } diff --git a/packages/types/src/extrinsic/v2/Extrinsic.ts b/packages/types/src/extrinsic/v2/Extrinsic.ts index 050aa316bf..60ca2d204e 100644 --- a/packages/types/src/extrinsic/v2/Extrinsic.ts +++ b/packages/types/src/extrinsic/v2/Extrinsic.ts @@ -9,7 +9,7 @@ import { ExtrinsicOptions } from '../types'; import { isU8a } from '@polkadot/util'; -import { createType, ClassOf } from '../../create'; +import { ClassOf } from '../../create'; import Struct from '../../codec/Struct'; const TRANSACTION_VERSION = 2; @@ -40,8 +40,8 @@ export default class ExtrinsicV2 extends Struct implements IExtrinsicImpl { return { method: value }; } else if (isU8a(value)) { // here we decode manually since we need to pull through the version information - const signature = createType(registry, 'ExtrinsicSignatureV2', value, { isSigned }); - const method = createType(registry, 'Call', value.subarray(signature.encodedLength)); + const signature = registry.createType('ExtrinsicSignatureV2', value, { isSigned }); + const method = registry.createType('Call', value.subarray(signature.encodedLength)); return { method, diff --git a/packages/types/src/extrinsic/v2/ExtrinsicSignature.ts b/packages/types/src/extrinsic/v2/ExtrinsicSignature.ts index bfd224dc94..c47b886583 100644 --- a/packages/types/src/extrinsic/v2/ExtrinsicSignature.ts +++ b/packages/types/src/extrinsic/v2/ExtrinsicSignature.ts @@ -7,7 +7,6 @@ import { Address, Balance, Call, Index } from '../../interfaces/runtime'; import { ExtrinsicPayloadValue, IExtrinsicSignature, IKeyringPair, Registry, SignatureOptions } from '../../types'; import { ExtrinsicSignatureOptions } from '../types'; -import { createType } from '../../create'; import Compact from '../../codec/Compact'; import Struct from '../../codec/Struct'; import { EMPTY_U8A, IMMORTAL_ERA } from '../constants'; @@ -108,8 +107,8 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi */ public addSignature (signer: Address | Uint8Array | string, signature: Uint8Array | string, payload: ExtrinsicPayloadValue | Uint8Array | string): IExtrinsicSignature { return this.injectSignature( - createType(this.registry, 'Address', signer), - createType(this.registry, 'Signature', signature), + this.registry.createType('Address', signer), + this.registry.createType('Signature', signature), new ExtrinsicPayloadV2(this.registry, payload) ); } @@ -133,9 +132,9 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi * @description Generate a payload and applies the signature from a keypair */ public sign (method: Call, account: IKeyringPair, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', account.publicKey); + const signer = this.registry.createType('Address', account.publicKey); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', payload.sign(account)); + const signature = this.registry.createType('Signature', payload.sign(account)); return this.injectSignature(signer, signature, payload); } @@ -144,9 +143,9 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi * @description Generate a payload and applies a fake signature */ public signFake (method: Call, address: Address | Uint8Array | string, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', address); + const signer = this.registry.createType('Address', address); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', new Uint8Array(64).fill(0x42)); + const signature = this.registry.createType('Signature', new Uint8Array(64).fill(0x42)); return this.injectSignature(signer, signature, payload); } diff --git a/packages/types/src/extrinsic/v3/Extrinsic.ts b/packages/types/src/extrinsic/v3/Extrinsic.ts index e729dc75ac..73fb42b5f4 100644 --- a/packages/types/src/extrinsic/v3/Extrinsic.ts +++ b/packages/types/src/extrinsic/v3/Extrinsic.ts @@ -9,7 +9,7 @@ import { ExtrinsicOptions } from '../types'; import { isU8a } from '@polkadot/util'; -import { createType, ClassOf } from '../../create'; +import { ClassOf } from '../../create'; import Struct from '../../codec/Struct'; const TRANSACTION_VERSION = 3; @@ -40,8 +40,8 @@ export default class ExtrinsicV3 extends Struct implements IExtrinsicImpl { return { method: value }; } else if (isU8a(value)) { // here we decode manually since we need to pull through the version information - const signature = createType(registry, 'ExtrinsicSignatureV3', value, { isSigned }); - const method = createType(registry, 'Call', value.subarray(signature.encodedLength)); + const signature = registry.createType('ExtrinsicSignatureV3', value, { isSigned }); + const method = registry.createType('Call', value.subarray(signature.encodedLength)); return { method, diff --git a/packages/types/src/extrinsic/v3/ExtrinsicSignature.ts b/packages/types/src/extrinsic/v3/ExtrinsicSignature.ts index 5e8706e63c..86bddef73c 100644 --- a/packages/types/src/extrinsic/v3/ExtrinsicSignature.ts +++ b/packages/types/src/extrinsic/v3/ExtrinsicSignature.ts @@ -5,7 +5,6 @@ import { Address, Call } from '../../interfaces/runtime'; import { ExtrinsicPayloadValue, IExtrinsicSignature, IKeyringPair, SignatureOptions } from '../../types'; -import { createType } from '../../create'; import { IMMORTAL_ERA } from '../constants'; import ExtrinsicSignatureV2 from '../v2/ExtrinsicSignature'; import ExtrinsicPayloadV3 from './ExtrinsicPayload'; @@ -21,8 +20,8 @@ export default class ExtrinsicSignatureV3 extends ExtrinsicSignatureV2 { */ public addSignature (signer: Address | Uint8Array | string, signature: Uint8Array | string, payload: ExtrinsicPayloadValue | Uint8Array | string): IExtrinsicSignature { return this.injectSignature( - createType(this.registry, 'Address', signer), - createType(this.registry, 'Signature', signature), + this.registry.createType('Address', signer), + this.registry.createType('Signature', signature), new ExtrinsicPayloadV3(this.registry, payload) ); } @@ -46,9 +45,9 @@ export default class ExtrinsicSignatureV3 extends ExtrinsicSignatureV2 { * @description Generate a payload and applies the signature from a keypair */ public sign (method: Call, account: IKeyringPair, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', account.publicKey); + const signer = this.registry.createType('Address', account.publicKey); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', payload.sign(account)); + const signature = this.registry.createType('Signature', payload.sign(account)); return this.injectSignature(signer, signature, payload); } @@ -57,9 +56,9 @@ export default class ExtrinsicSignatureV3 extends ExtrinsicSignatureV2 { * @description Generate a payload and applies a fake signature */ public signFake (method: Call, address: Address | Uint8Array | string, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', address); + const signer = this.registry.createType('Address', address); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'Signature', new Uint8Array(64).fill(0x42)); + const signature = this.registry.createType('Signature', new Uint8Array(64).fill(0x42)); return this.injectSignature(signer, signature, payload); } diff --git a/packages/types/src/extrinsic/v4/Extrinsic.ts b/packages/types/src/extrinsic/v4/Extrinsic.ts index 6c5ef443c1..94adbf5a03 100644 --- a/packages/types/src/extrinsic/v4/Extrinsic.ts +++ b/packages/types/src/extrinsic/v4/Extrinsic.ts @@ -9,7 +9,7 @@ import { ExtrinsicOptions } from '../types'; import { isU8a } from '@polkadot/util'; -import { createType, ClassOf } from '../../create'; +import { ClassOf } from '../../create'; import Struct from '../../codec/Struct'; export const TRANSACTION_VERSION = 4; @@ -40,8 +40,8 @@ export default class ExtrinsicV4 extends Struct implements IExtrinsicImpl { return { method: value }; } else if (isU8a(value)) { // here we decode manually since we need to pull through the version information - const signature = createType(registry, 'ExtrinsicSignatureV4', value, { isSigned }); - const method = createType(registry, 'Call', value.subarray(signature.encodedLength)); + const signature = registry.createType('ExtrinsicSignatureV4', value, { isSigned }); + const method = registry.createType('Call', value.subarray(signature.encodedLength)); return { method, diff --git a/packages/types/src/extrinsic/v4/ExtrinsicSignature.ts b/packages/types/src/extrinsic/v4/ExtrinsicSignature.ts index bfa739d3b0..3cfbafcc59 100644 --- a/packages/types/src/extrinsic/v4/ExtrinsicSignature.ts +++ b/packages/types/src/extrinsic/v4/ExtrinsicSignature.ts @@ -9,7 +9,6 @@ import { ExtrinsicSignatureOptions } from '../types'; import { u8aConcat } from '@polkadot/util'; -import { createType } from '../../create'; import Compact from '../../codec/Compact'; import Struct from '../../codec/Struct'; import { EMPTY_U8A, IMMORTAL_ERA } from '../constants'; @@ -115,8 +114,8 @@ export default class ExtrinsicSignatureV4 extends Struct implements IExtrinsicSi */ public addSignature (signer: Address | Uint8Array | string, signature: Uint8Array | string, payload: ExtrinsicPayloadValue | Uint8Array | string): IExtrinsicSignature { return this.injectSignature( - createType(this.registry, 'Address', signer), - createType(this.registry, 'MultiSignature', signature), + this.registry.createType('Address', signer), + this.registry.createType('MultiSignature', signature), new ExtrinsicPayloadV4(this.registry, payload) ); } @@ -140,9 +139,9 @@ export default class ExtrinsicSignatureV4 extends Struct implements IExtrinsicSi * @description Generate a payload and applies the signature from a keypair */ public sign (method: Call, account: IKeyringPair, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', account.publicKey); + const signer = this.registry.createType('Address', account.publicKey); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'MultiSignature', payload.sign(account)); + const signature = this.registry.createType('MultiSignature', payload.sign(account)); return this.injectSignature(signer, signature, payload); } @@ -151,9 +150,9 @@ export default class ExtrinsicSignatureV4 extends Struct implements IExtrinsicSi * @description Generate a payload and applies a fake signature */ public signFake (method: Call, address: Address | Uint8Array | string, options: SignatureOptions): IExtrinsicSignature { - const signer = createType(this.registry, 'Address', address); + const signer = this.registry.createType('Address', address); const payload = this.createPayload(method, options); - const signature = createType(this.registry, 'MultiSignature', u8aConcat(new Uint8Array([1]), new Uint8Array(64).fill(0x42))); + const signature = this.registry.createType('MultiSignature', u8aConcat(new Uint8Array([1]), new Uint8Array(64).fill(0x42))); return this.injectSignature(signer, signature, payload); } diff --git a/packages/types/src/generic/AccountId.spec.ts b/packages/types/src/generic/AccountId.spec.ts index 4851b8c5eb..319e38ce4b 100644 --- a/packages/types/src/generic/AccountId.spec.ts +++ b/packages/types/src/generic/AccountId.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import Raw from '../codec/Raw'; import jsonVec from '../json/AccountIdVec.001.json'; import AccountId from './AccountId'; @@ -11,7 +11,7 @@ describe('AccountId', (): void => { const registry = new TypeRegistry(); describe('defaults', (): void => { - const id = createType(registry, 'AccountId'); + const id = registry.createType('AccountId'); it('has a 32-byte length', (): void => { expect(id).toHaveLength(32); @@ -29,13 +29,13 @@ describe('AccountId', (): void => { describe('decoding', (): void => { const testDecode = (type: string, input: Uint8Array | string | AccountId, expected: string): void => it(`can decode from ${type}`, (): void => { - const a = createType(registry, 'AccountId', input); + const a = registry.createType('AccountId', input); expect(a.toString()).toBe(expected); }); testDecode( 'AccountId', - createType(registry, 'AccountId', '0x0102030405060708010203040506070801020304050607080102030405060708'), + registry.createType('AccountId', '0x0102030405060708010203040506070801020304050607080102030405060708'), '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF' ); testDecode('hex', '0x0102030405060708010203040506070801020304050607080102030405060708', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'); @@ -61,7 +61,7 @@ describe('AccountId', (): void => { describe('encoding', (): void => { const testEncode = (to: 'toHex' | 'toJSON' | 'toString' | 'toU8a', expected: Uint8Array | string, input = '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'): void => it(`can encode ${to}`, (): void => { - const a = createType(registry, 'AccountId', input); + const a = registry.createType('AccountId', input); expect(a[to]()).toEqual(expected); }); @@ -76,20 +76,20 @@ describe('AccountId', (): void => { ])); it('decodes to a non-empty value', (): void => { - expect(createType(registry, 'AccountId', '7qT1BvpawNbqb3BZaBTMFMMAKrpJKLPf1LmEHR1JyarWJdMX').isEmpty).toBe(false); + expect(registry.createType('AccountId', '7qT1BvpawNbqb3BZaBTMFMMAKrpJKLPf1LmEHR1JyarWJdMX').isEmpty).toBe(false); }); }); describe('storage decoding', (): void => { it('has the correct entries', (): void => { registry.setChainProperties( - createType(registry, 'ChainProperties', { + registry.createType('ChainProperties', { ss58Format: 68 }) ); - const data = createType(registry, 'StorageData', jsonVec.params.result.changes[0][1]); - const list = createType(registry, 'Vec', data).map((accountId): string => accountId.toString()); + const data = registry.createType('StorageData', jsonVec.params.result.changes[0][1]); + const list = registry.createType('Vec', data).map((accountId): string => accountId.toString()); expect(list).toEqual([ '7qVJujLF3EDbZt5WfQXWvueFedMS4Vfk2Hb4GyR8jwksTLup', diff --git a/packages/types/src/generic/AccountIndex.spec.ts b/packages/types/src/generic/AccountIndex.spec.ts index 6c256acce5..1cc3543e49 100644 --- a/packages/types/src/generic/AccountIndex.spec.ts +++ b/packages/types/src/generic/AccountIndex.spec.ts @@ -4,7 +4,7 @@ import BN from 'bn.js'; -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import AccountIndex from './AccountIndex'; describe('AccountIndex', (): void => { @@ -12,40 +12,40 @@ describe('AccountIndex', (): void => { it('creates a BN representation', (): void => { expect( - createType(registry, 'AccountIndex', new Uint8Array([17, 18, 19, 20])).toNumber() + registry.createType('AccountIndex', new Uint8Array([17, 18, 19, 20])).toNumber() ).toEqual(336794129); }); it('creates from BigInt', (): void => { expect( - createType(registry, 'AccountIndex', 336_794_129n).toNumber() + registry.createType('AccountIndex', 336_794_129n).toNumber() ).toEqual(336794129); }); it('creates a BN representation (from ss-58)', (): void => { expect( - createType(registry, 'AccountIndex', 'Mwz15xP2').toNumber() + registry.createType('AccountIndex', 'Mwz15xP2').toNumber() ).toEqual(336794129); }); it('constructs 2-byte from number', (): void => { expect( - createType(registry, 'AccountIndex', 256 * 1).toString() + registry.createType('AccountIndex', 256 * 1).toString() ).toEqual('25GUyv'); }); it('constructs from number', (): void => { expect( - createType(registry, 'AccountIndex', new BN(336794129)).toString() + registry.createType('AccountIndex', new BN(336794129)).toString() ).toEqual('Mwz15xP2'); }); it('compares ss-58 values', (): void => { - expect(createType(registry, 'AccountIndex', 256 * 1).eq('25GUyv')).toBe(true); + expect(registry.createType('AccountIndex', 256 * 1).eq('25GUyv')).toBe(true); }); it('compares numbers', (): void => { - expect(createType(registry, 'AccountIndex', '2jpAFn').eq(256 * 1)).toBe(true); + expect(registry.createType('AccountIndex', '2jpAFn').eq(256 * 1)).toBe(true); }); describe('calcLength', (): void => { diff --git a/packages/types/src/generic/AccountIndex.ts b/packages/types/src/generic/AccountIndex.ts index 5ecb063e16..751164fbca 100644 --- a/packages/types/src/generic/AccountIndex.ts +++ b/packages/types/src/generic/AccountIndex.ts @@ -8,7 +8,6 @@ import BN from 'bn.js'; import { bnToBn, isBn, isBigInt, isNumber, isU8a, isHex } from '@polkadot/util'; import { decodeAddress, encodeAddress } from '@polkadot/util-crypto'; -import { createType } from '../create'; import U32 from '../primitive/U32'; export const ENUMSET_SIZE = new BN(64); @@ -93,7 +92,7 @@ export default class AccountIndex extends U32 { } // convert and compare - return super.eq(createType(this.registry, 'AccountIndex', other)); + return super.eq(this.registry.createType('AccountIndex', other)); } /** diff --git a/packages/types/src/generic/Address.spec.ts b/packages/types/src/generic/Address.spec.ts index 462b524b2f..554a1e1d96 100644 --- a/packages/types/src/generic/Address.spec.ts +++ b/packages/types/src/generic/Address.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import AccountId from './AccountId'; import AccountIndex from './AccountIndex'; import Address from './Address'; @@ -12,7 +12,7 @@ describe('Address', (): void => { const testDecode = (type: string, input: Address | AccountId | AccountIndex | number[] | Uint8Array, expected: string): void => it(`can decode from ${type}`, (): void => { - const a = createType(registry, 'Address', input); + const a = registry.createType('Address', input); expect(a.toString()).toBe(expected); }); @@ -20,35 +20,35 @@ describe('Address', (): void => { it('equals on AccountId', (): void => { const addr = '5DkQbYAExs3M2sZgT1Ec3mKfZnAQCL4Dt9beTCknkCUn5jzo'; - expect(createType(registry, 'Address', addr).eq(addr)).toBe(true); + expect(registry.createType('Address', addr).eq(addr)).toBe(true); }); it('equals on AccountIndex', (): void => { // see the test below - these are equivalent (with different prefix encoding) - expect(createType(registry, 'Address', '2jpAFn').eq('25GUyv')).toBe(true); + expect(registry.createType('Address', '2jpAFn').eq('25GUyv')).toBe(true); }); }); describe('decoding', (): void => { testDecode( 'Address', - createType(registry, 'Address', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'), + registry.createType('Address', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'), '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF' ); testDecode( 'AccountId', - createType(registry, 'AccountId', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'), + registry.createType('AccountId', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'), '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF' ); testDecode( 'AccountIndex (mixed prefixes)', - createType(registry, 'Address', '2jpAFn'), + registry.createType('Address', '2jpAFn'), // NOTE Expected adress here is encoded with prefix 42, input above with 68 '25GUyv' ); testDecode( 'AccountIndex (hex)', - createType(registry, 'AccountIndex', '0x0100'), + registry.createType('AccountIndex', '0x0100'), '25GUyv' ); testDecode( @@ -97,7 +97,7 @@ describe('Address', (): void => { describe('encoding', (): void => { const testEncode = (to: 'toHex' | 'toString' | 'toU8a', expected: string | Uint8Array): void => it(`can encode ${to}`, (): void => { - const a = createType(registry, 'Address', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'); + const a = registry.createType('Address', '5C62W7ELLAAfix9LYrcx5smtcffbhvThkM5x7xfMeYXCtGwF'); expect(a[to]()).toEqual(expected); }); diff --git a/packages/types/src/generic/Address.ts b/packages/types/src/generic/Address.ts index 6496f70992..28b287ceba 100644 --- a/packages/types/src/generic/Address.ts +++ b/packages/types/src/generic/Address.ts @@ -8,7 +8,6 @@ import BN from 'bn.js'; import { isBn, isHex, isNumber, isU8a, u8aConcat, u8aToHex, u8aToU8a, u8aToBn } from '@polkadot/util'; import { decodeAddress } from '@polkadot/util-crypto'; -import { createType } from '../create'; import Base from '../codec/Base'; import AccountId from './AccountId'; import AccountIndex from './AccountIndex'; @@ -22,8 +21,8 @@ function decodeString (registry: Registry, value: string): AccountId | AccountIn const decoded = decodeAddress(value); return decoded.length === 32 - ? createType(registry, 'AccountId', decoded) - : createType(registry, 'AccountIndex', u8aToBn(decoded, true)); + ? registry.createType('AccountId', decoded) + : registry.createType('AccountIndex', u8aToBn(decoded, true)); } /** @internal */ @@ -31,14 +30,14 @@ function decodeU8a (registry: Registry, value: Uint8Array): AccountId | AccountI // This allows us to instantiate an address with a raw publicKey. Do this first before // we checking the first byte, otherwise we may split an already-existent valid address if (value.length === 32) { - return createType(registry, 'AccountId', value); + return registry.createType('AccountId', value); } else if (value[0] === 0xff) { - return createType(registry, 'AccountId', value.subarray(1)); + return registry.createType('AccountId', value.subarray(1)); } const [offset, length] = AccountIndex.readLength(value); - return createType(registry, 'AccountIndex', u8aToBn(value.subarray(offset, offset + length), true)); + return registry.createType('AccountIndex', u8aToBn(value.subarray(offset, offset + length), true)); } /** @@ -61,7 +60,7 @@ export default class Address extends Base { } else if (value instanceof Address) { return value.raw; } else if (isBn(value) || isNumber(value)) { - return createType(registry, 'AccountIndex', value); + return registry.createType('AccountIndex', value); } else if (Array.isArray(value) || isHex(value) || isU8a(value)) { return decodeU8a(registry, u8aToU8a(value)); } diff --git a/packages/types/src/generic/Block.ts b/packages/types/src/generic/Block.ts index 34e91c2074..43c9a9b3b8 100644 --- a/packages/types/src/generic/Block.ts +++ b/packages/types/src/generic/Block.ts @@ -7,7 +7,6 @@ import { AnyNumber, AnyU8a, Registry } from '../types'; import { blake2AsU8a } from '@polkadot/util-crypto'; -import { createType } from '../create'; import Extrinsic from '../extrinsic/Extrinsic'; import Struct from '../codec/Struct'; import Vec from '../codec/Vec'; @@ -42,7 +41,7 @@ export default class Block extends Struct { * @description Encodes a content [[Hash]] for the block */ public get contentHash (): H256 { - return createType(this.registry, 'H256', blake2AsU8a(this.toU8a(), 256)); + return this.registry.createType('H256', blake2AsU8a(this.toU8a(), 256)); } /** diff --git a/packages/types/src/generic/ConsensusEngineId.ts b/packages/types/src/generic/ConsensusEngineId.ts index 56cb8f4b3b..30a3585c7b 100644 --- a/packages/types/src/generic/ConsensusEngineId.ts +++ b/packages/types/src/generic/ConsensusEngineId.ts @@ -7,7 +7,6 @@ import { AccountId } from '../interfaces/runtime'; import BN from 'bn.js'; import { bnToBn } from '@polkadot/util'; -import { createType } from '../create'; import Bytes from '../primitive/Bytes'; import U32 from '../primitive/U32'; @@ -60,7 +59,7 @@ export default class ConsensusEngineId extends U32 { private getAuraAuthor (bytes: Bytes, sessionValidators: AccountId[]): AccountId { return sessionValidators[ - createType(this.registry, 'RawAuraPreDigest', bytes.toU8a(true)) + this.registry.createType('RawAuraPreDigest', bytes.toU8a(true)) .slotNumber .mod(new BN(sessionValidators.length)) .toNumber() @@ -68,7 +67,7 @@ export default class ConsensusEngineId extends U32 { } private getBabeAuthor (bytes: Bytes, sessionValidators: AccountId[]): AccountId { - const digest = createType(this.registry, 'RawBabePreDigestCompat', bytes.toU8a(true)); + const digest = this.registry.createType('RawBabePreDigestCompat', bytes.toU8a(true)); return sessionValidators[ (digest.value as U32).toNumber() diff --git a/packages/types/src/generic/Vote.ts b/packages/types/src/generic/Vote.ts index 4ff9462fb7..73fc3f5454 100644 --- a/packages/types/src/generic/Vote.ts +++ b/packages/types/src/generic/Vote.ts @@ -8,7 +8,6 @@ import { Conviction } from '../interfaces/democracy'; import { isBoolean, isNumber, isU8a, isUndefined } from '@polkadot/util'; -import { createType } from '../create'; import U8aFixed from '../codec/U8aFixed'; import Bool from '../primitive/Bool'; @@ -53,7 +52,7 @@ function decodeVote (registry: Registry, value?: InputTypes): Uint8Array { } const vote = new Bool(registry, value.aye).isTrue ? AYE_BITS : NAY_BITS; - const conviction = createType(registry, 'Conviction', isUndefined(value.conviction) ? DEF_CONV : value.conviction); + const conviction = registry.createType('Conviction', isUndefined(value.conviction) ? DEF_CONV : value.conviction); return new Uint8Array([vote | conviction.index]); } @@ -77,7 +76,7 @@ export default class Vote extends U8aFixed { super(registry, decoded, 8); this._aye = (decoded[0] & AYE_BITS) === AYE_BITS; - this._conviction = createType(this.registry, 'Conviction', decoded[0] & CON_MASK); + this._conviction = this.registry.createType('Conviction', decoded[0] & CON_MASK); } /** diff --git a/packages/types/src/interfaces/extrinsics/EdcsaSignature.spec.ts b/packages/types/src/interfaces/extrinsics/EdcsaSignature.spec.ts index 249fa87ea1..1e96d4cf0c 100644 --- a/packages/types/src/interfaces/extrinsics/EdcsaSignature.spec.ts +++ b/packages/types/src/interfaces/extrinsics/EdcsaSignature.spec.ts @@ -4,7 +4,7 @@ import { hexToU8a } from '@polkadot/util'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; const TESTS = [ '0x55bd020bdbbdc02de34e915effc9b18a99002f4c29f64e22e8dcbb69e722ea6c28e1bb53b9484063fbbfd205e49dcc1f620929f520c9c4c3695150f05a28f52a01', @@ -16,19 +16,19 @@ describe('EdcsaSignature', (): void => { it('constructs and has a valid representation (toHex)', (): void => { expect( - createType(registry, 'EcdsaSignature', TESTS[0]).toHex() + registry.createType('EcdsaSignature', TESTS[0]).toHex() ).toEqual(TESTS[0]); }); it('constructs and has a valid representation (toJSON)', (): void => { expect( - createType(registry, 'EcdsaSignature', TESTS[0]).toJSON() + registry.createType('EcdsaSignature', TESTS[0]).toJSON() ).toEqual(TESTS[0]); }); it('constructs and has a valid representation (toU8a)', (): void => { expect( - createType(registry, 'EcdsaSignature', TESTS[1]).toU8a() + registry.createType('EcdsaSignature', TESTS[1]).toU8a() ).toEqual(hexToU8a(TESTS[1])); }); }); diff --git a/packages/types/src/interfaces/identity/IdentityFields.spec.ts b/packages/types/src/interfaces/identity/IdentityFields.spec.ts index e01c33045b..4a21d34810 100644 --- a/packages/types/src/interfaces/identity/IdentityFields.spec.ts +++ b/packages/types/src/interfaces/identity/IdentityFields.spec.ts @@ -2,32 +2,32 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { TypeRegistry, createType } from '../../create'; +import { TypeRegistry } from '../../create'; describe('IdentityFields', (): void => { const registry = new TypeRegistry(); it('has a custom u64 (64-bit) encodedLength', (): void => { expect( - createType(registry, 'IdentityFields').encodedLength + registry.createType('IdentityFields').encodedLength ).toEqual(8); }); it('encodes a sample', (): void => { expect( - createType(registry, 'IdentityFields', ['Display', 'Legal']).valueEncoded.eqn(1 + 2) + registry.createType('IdentityFields', ['Display', 'Legal']).valueEncoded.eqn(1 + 2) ).toBe(true); }); it('encodes to a valid u8a value', (): void => { expect( - createType(registry, 'IdentityFields', ['Display', 'Legal']).toU8a() + registry.createType('IdentityFields', ['Display', 'Legal']).toU8a() ).toEqual(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 3])); }); it('decodes from a u8a', (): void => { expect( - createType(registry, 'IdentityFields', new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1 + 2 + 64])).toHuman() + registry.createType('IdentityFields', new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1 + 2 + 64])).toHuman() ).toEqual(['Display', 'Legal', 'Image']); }); }); diff --git a/packages/types/src/interfaces/rpc/ChainProperties.spec.ts b/packages/types/src/interfaces/rpc/ChainProperties.spec.ts index 7b5ee65dca..e6ba009d89 100644 --- a/packages/types/src/interfaces/rpc/ChainProperties.spec.ts +++ b/packages/types/src/interfaces/rpc/ChainProperties.spec.ts @@ -2,19 +2,19 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; describe('ChainProperties', (): void => { const registry = new TypeRegistry(); it('decodes from a null value', (): void => { expect( - [...createType(registry, 'ChainProperties', null).entries()] + [...registry.createType('ChainProperties', null).entries()] ).toEqual([]); }); it('decodes from an actual object', (): void => { - const { ss58Format, tokenDecimals, tokenSymbol } = createType(registry, 'ChainProperties', { + const { ss58Format, tokenDecimals, tokenSymbol } = registry.createType('ChainProperties', { ss58Format: 2, tokenDecimals: 15, tokenSymbol: 'KSM' @@ -26,7 +26,7 @@ describe('ChainProperties', (): void => { }); it('decodes from an object, flagged for non-existent ss58Format', (): void => { - const { ss58Format, tokenDecimals, tokenSymbol } = createType(registry, 'ChainProperties', { tokenSymbol: 'DEV' }); + const { ss58Format, tokenDecimals, tokenSymbol } = registry.createType('ChainProperties', { tokenSymbol: 'DEV' }); expect(ss58Format.isNone).toBe(true); expect(tokenDecimals.isNone).toBe(true); diff --git a/packages/types/src/interfaces/rpc/ExtrinsicStatus.spec.ts b/packages/types/src/interfaces/rpc/ExtrinsicStatus.spec.ts index e334db2979..1910bd8bb3 100644 --- a/packages/types/src/interfaces/rpc/ExtrinsicStatus.spec.ts +++ b/packages/types/src/interfaces/rpc/ExtrinsicStatus.spec.ts @@ -4,7 +4,7 @@ import { ExtrinsicStatus } from './types'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; import rpc from '../../json/ExtrinsicStatus.001.json'; describe('ExtrinsicStatus', (): void => { @@ -12,7 +12,7 @@ describe('ExtrinsicStatus', (): void => { let status: ExtrinsicStatus; beforeEach((): void => { - status = createType(registry, 'ExtrinsicStatus', rpc.params.result); + status = registry.createType('ExtrinsicStatus', rpc.params.result); }); it('has the correct type', (): void => { diff --git a/packages/types/src/interfaces/rpc/KeyValueOption.spec.ts b/packages/types/src/interfaces/rpc/KeyValueOption.spec.ts index 82d78f57b5..4440b6da7e 100644 --- a/packages/types/src/interfaces/rpc/KeyValueOption.spec.ts +++ b/packages/types/src/interfaces/rpc/KeyValueOption.spec.ts @@ -2,13 +2,13 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; describe('KeyValueOption', (): void => { const registry = new TypeRegistry(); it('exposes the properties for key/value', (): void => { - const [key, value] = createType(registry, 'KeyValueOption', [ + const [key, value] = registry.createType('KeyValueOption', [ '0x11223344' ]); diff --git a/packages/types/src/interfaces/rpc/RuntimeVersion.spec.ts b/packages/types/src/interfaces/rpc/RuntimeVersion.spec.ts index 45e0f9df73..d773ffc18f 100644 --- a/packages/types/src/interfaces/rpc/RuntimeVersion.spec.ts +++ b/packages/types/src/interfaces/rpc/RuntimeVersion.spec.ts @@ -4,7 +4,7 @@ import { RuntimeVersion } from './types'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; import rpc from '../../json/RuntimeVersion.002.json'; describe('RuntimeVersion', (): void => { @@ -12,7 +12,7 @@ describe('RuntimeVersion', (): void => { let version: RuntimeVersion; beforeEach((): void => { - version = createType(registry, 'RuntimeVersion', rpc.result); + version = registry.createType('RuntimeVersion', rpc.result); }); it('has the correct authoring', (): void => { diff --git a/packages/types/src/interfaces/rpc/StorageChangeSet.spec.ts b/packages/types/src/interfaces/rpc/StorageChangeSet.spec.ts index 6740d79efb..9dc2978c5d 100644 --- a/packages/types/src/interfaces/rpc/StorageChangeSet.spec.ts +++ b/packages/types/src/interfaces/rpc/StorageChangeSet.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types'; import json from '../../json/StorageChangeSet.001.json'; @@ -10,7 +10,7 @@ describe('StorageChangeSet', (): void => { const registry = new TypeRegistry(); describe('construction', (): void => { - const set = createType(registry, 'StorageChangeSet', { + const set = registry.createType('StorageChangeSet', { block: '0x1234', changes: [ ['0xab', '0xcd'] @@ -31,7 +31,7 @@ describe('StorageChangeSet', (): void => { }); describe('json', (): void => { - const set = createType(registry, 'StorageChangeSet', json.params.result); + const set = registry.createType('StorageChangeSet', json.params.result); it('has the correct hash', (): void => { expect( diff --git a/packages/types/src/interfaces/runtime/Header.spec.ts b/packages/types/src/interfaces/runtime/Header.spec.ts index 507cbf647b..d31472084b 100644 --- a/packages/types/src/interfaces/runtime/Header.spec.ts +++ b/packages/types/src/interfaces/runtime/Header.spec.ts @@ -4,7 +4,7 @@ import BN from 'bn.js'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; import json1 from '../../json/Header.001.json'; import json2 from '../../json/Header.002.json'; import json3 from '../../json/Header.003.json'; @@ -15,7 +15,7 @@ describe('Header', (): void => { const registry = new TypeRegistry(); it('decodes an actual JSON response', (): void => { - const header = createType(registry, 'Header', json1.result); + const header = registry.createType('Header', json1.result); expect( header.number.toNumber() @@ -35,7 +35,7 @@ describe('Header', (): void => { }); it('parses old-style JSON headers (deprecated)', (): void => { - const header = createType(registry, 'Header', json2.result); + const header = registry.createType('Header', json2.result); expect( header.digest.logs @@ -43,7 +43,7 @@ describe('Header', (): void => { }); it('creates a valid hash (incl. digest & compact)', (): void => { - const header = createType(registry, 'Header', json3.result); + const header = registry.createType('Header', json3.result); expect( header.hash.toHex() @@ -54,7 +54,7 @@ describe('Header', (): void => { }); it('calculates correct hash, matching with parentHash', (): void => { - const blockHash = createType(registry, 'Header', block00300.result.block.header).hash.toHex(); + const blockHash = registry.createType('Header', block00300.result.block.header).hash.toHex(); expect(blockHash).toEqual(block00301.result.block.header.parentHash); }); diff --git a/packages/types/src/interfaces/runtime/KeyValue.spec.ts b/packages/types/src/interfaces/runtime/KeyValue.spec.ts index 67e25f2be4..d10e7dd4d9 100644 --- a/packages/types/src/interfaces/runtime/KeyValue.spec.ts +++ b/packages/types/src/interfaces/runtime/KeyValue.spec.ts @@ -2,14 +2,14 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; describe('KeyValue', (): void => { const registry = new TypeRegistry(); it('decodes KeyValue from u8a', (): void => { expect( - createType(registry, 'KeyValue', Uint8Array.from([ + registry.createType('KeyValue', Uint8Array.from([ 4 << 2, 0x11, 0x22, 0x33, 0x44, 9 << 2, @@ -20,7 +20,7 @@ describe('KeyValue', (): void => { it('encodes KeyValue from JSON', (): void => { expect( - createType(registry, 'KeyValue', ['0x11223344', '0x998877665544332211']).toU8a() + registry.createType('KeyValue', ['0x11223344', '0x998877665544332211']).toU8a() ).toEqual( new Uint8Array([ 4 << 2, @@ -32,7 +32,7 @@ describe('KeyValue', (): void => { }); it('exposes the properties for key/value', (): void => { - const [key, value] = createType(registry, 'KeyValue', ['0x11223344', '0x998877665544332211']); + const [key, value] = registry.createType('KeyValue', ['0x11223344', '0x998877665544332211']); expect(key.toHex()).toEqual('0x11223344'); expect(value.toHex()).toEqual('0x998877665544332211'); diff --git a/packages/types/src/interfaces/runtime/SignedBlock.spec.ts b/packages/types/src/interfaces/runtime/SignedBlock.spec.ts index 7716f50732..7401876532 100644 --- a/packages/types/src/interfaces/runtime/SignedBlock.spec.ts +++ b/packages/types/src/interfaces/runtime/SignedBlock.spec.ts @@ -5,7 +5,7 @@ import Metadata from '@polkadot/metadata/Metadata'; import metadataStatic from '@polkadot/metadata/Metadata/static'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; import immortalTxs from '../../json/SignedBlock.004.immortal.json'; import mortalTxs from '../../json/SignedBlock.004.mortal.json'; import knownMehods from '../../json/SignedBlock.005.json'; @@ -17,7 +17,7 @@ new Metadata(registry, metadataStatic); describe('SignedBlock', (): void => { it('decodes a full block', (): void => { - const s = createType(registry, 'SignedBlock', knownMehods.result); + const s = registry.createType('SignedBlock', knownMehods.result); expect( s.block.header.stateRoot.toString() @@ -32,7 +32,7 @@ describe('SignedBlock', (): void => { // Test to replicate https://github.com/polkadot-js/api/issues/1212 it('decodes to known extrinsics', (): void => { - const s = createType(registry, 'SignedBlock', knownMehods.result); + const s = registry.createType('SignedBlock', knownMehods.result); const indexes = s.block.extrinsics.map(({ method: { callIndex } }): Uint8Array => callIndex); expect(indexes).toEqual([ @@ -43,7 +43,7 @@ describe('SignedBlock', (): void => { describe('eras', (): void => { it('can decode immortals', (): void => { - const s = createType(registry, 'SignedBlock', immortalTxs.result); + const s = registry.createType('SignedBlock', immortalTxs.result); const immortalTx = s.block.extrinsics[0]; expect(immortalTx.method.methodName).toEqual('transfer'); @@ -51,7 +51,7 @@ describe('SignedBlock', (): void => { }); it('can decode mortals', (): void => { - const s = createType(registry, 'SignedBlock', mortalTxs.result); + const s = registry.createType('SignedBlock', mortalTxs.result); const mortalTx = s.block.extrinsics[0]; expect(mortalTx.method.methodName).toEqual('transfer'); diff --git a/packages/types/src/interfaces/staking/CompactAssignments.spec.ts b/packages/types/src/interfaces/staking/CompactAssignments.spec.ts index c49d3ce2d3..a2526065e8 100644 --- a/packages/types/src/interfaces/staking/CompactAssignments.spec.ts +++ b/packages/types/src/interfaces/staking/CompactAssignments.spec.ts @@ -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 { TypeRegistry, createType, createTypeUnsafe } from '../../create'; +import { TypeRegistry, createTypeUnsafe } from '../../create'; describe('CompactAssignments', (): void => { const registry = new TypeRegistry(); const votes2 = [['5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', [['5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y', 123456]], '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty']]; - const test = createType(registry, 'CompactAssignments', { + const test = registry.createType('CompactAssignments', { votes1: [['5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', [], '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty']], votes2 }); diff --git a/packages/types/src/interfaces/system/EventRecord.spec.ts b/packages/types/src/interfaces/system/EventRecord.spec.ts index 26a1300350..c7efbff878 100644 --- a/packages/types/src/interfaces/system/EventRecord.spec.ts +++ b/packages/types/src/interfaces/system/EventRecord.spec.ts @@ -6,7 +6,7 @@ import Metadata from '@polkadot/metadata/Metadata'; import rpcMetadataV0 from '@polkadot/metadata/Metadata/v0/static'; import rpcMetadata from '@polkadot/metadata/Metadata/static'; -import { createType, TypeRegistry } from '../../create'; +import { TypeRegistry } from '../../create'; import json1 from '../../json/EventRecord.001.json'; import json3 from '../../json/EventRecord.003.json'; @@ -20,7 +20,7 @@ describe('EventRecord', (): void => { }); it('decodes correctly', (): void => { - const records = createType(registry, 'Vec', json1.params.result.changes[0][1]) as any; + const records = registry.createType('Vec', json1.params.result.changes[0][1]) as any; const er = records[0]; expect(er.phase.type).toEqual('ApplyExtrinsic'); @@ -33,16 +33,16 @@ describe('EventRecord', (): void => { new Metadata(registry, rpcMetadata); }); - it('decodes older eventrecord correctly', (): void => { - const records = createType(registry, 'Vec', json1.params.result.changes[0][1], true) as any; + it('decodes older EventRecord correctly', (): void => { + const records = registry.createType('Vec', json1.params.result.changes[0][1], true) as any; const er = records[0]; expect(er.phase.type).toEqual('ApplyExtrinsic'); }); - it('decodes eventrecord with topics correctly', (): void => { + it('decodes EventRecord with topics correctly', (): void => { const hex = json3.params.result.changes[0][1]; - const records = createType(registry, 'Vec', hex, true) as any; + const records = registry.createType('Vec', hex, true) as any; const er = records[0]; expect(er.phase.type).toEqual('ApplyExtrinsic'); diff --git a/packages/types/src/primitive/Bool.ts b/packages/types/src/primitive/Bool.ts index 5fe4496531..9f2976aac2 100644 --- a/packages/types/src/primitive/Bool.ts +++ b/packages/types/src/primitive/Bool.ts @@ -8,8 +8,6 @@ import { Codec, Registry } from '../types'; import { isU8a, u8aToHex } from '@polkadot/util'; import { blake2AsU8a } from '@polkadot/util-crypto'; -import { createType } from '../create'; - /** @internal */ function decodeBool (value: any): boolean { if (value instanceof Boolean) { @@ -48,7 +46,7 @@ export default class Bool extends Boolean implements Codec { * @description returns a hash of the contents */ public get hash (): H256 { - return createType(this.registry, 'H256', blake2AsU8a(this.toU8a(), 256)); + return this.registry.createType('H256', blake2AsU8a(this.toU8a(), 256)); } /** diff --git a/packages/types/src/primitive/Bytes.spec.ts b/packages/types/src/primitive/Bytes.spec.ts index f0fb115e8e..41d6efad9b 100644 --- a/packages/types/src/primitive/Bytes.spec.ts +++ b/packages/types/src/primitive/Bytes.spec.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { createType, TypeRegistry } from '../create'; +import { TypeRegistry } from '../create'; import Bytes from './Bytes'; describe('Bytes', (): void => { @@ -40,7 +40,7 @@ describe('Bytes', (): void => { expect( new Bytes( registry, - createType(registry, 'StorageData', HEX) + registry.createType('StorageData', HEX) ).toU8a() ).toEqual(U8A); }); diff --git a/packages/types/src/primitive/Data.ts b/packages/types/src/primitive/Data.ts index 3ec283cee9..353aac48c3 100644 --- a/packages/types/src/primitive/Data.ts +++ b/packages/types/src/primitive/Data.ts @@ -8,7 +8,6 @@ import { Registry } from '../types'; import { isString, isU8a, u8aToU8a } from '@polkadot/util'; import Enum from '../codec/Enum'; -import { createType } from '../create/createType'; import Bytes from './Bytes'; /** @internal */ @@ -26,7 +25,7 @@ function decodeDataU8a (registry: Registry, value: Uint8Array): [any, number | u const data = value.subarray(1, length + 1); // in this case, we are passing a Raw back (since we have no length) - return [createType(registry, 'Raw', data), 1]; + return [registry.createType('Raw', data), 1]; } else if (indicator >= 34 && indicator <= 37) { return [value.subarray(1, 32 + 1), indicator - 32]; // 34 becomes 2 } diff --git a/packages/types/src/primitive/Text.ts b/packages/types/src/primitive/Text.ts index 8e47008dc8..7a340acd31 100644 --- a/packages/types/src/primitive/Text.ts +++ b/packages/types/src/primitive/Text.ts @@ -8,7 +8,6 @@ import { AnyU8a, Codec, Registry } from '../types'; import { assert, hexToU8a, isHex, isString, stringToU8a, u8aToString, u8aToHex } from '@polkadot/util'; import { blake2AsU8a } from '@polkadot/util-crypto'; -import { createType } from '../create'; import Compact from '../codec/Compact'; import Raw from '../codec/Raw'; @@ -70,7 +69,7 @@ export default class Text extends String implements Codec { * @description returns a hash of the contents */ public get hash (): H256 { - return createType(this.registry, 'H256', blake2AsU8a(this.toU8a(), 256)); + return this.registry.createType('H256', blake2AsU8a(this.toU8a(), 256)); } /**