Share TypeSpec between registry instances (#3972)
* Share TypeSpec between registry instances * 6.0.3
This commit is contained in:
+4
-1
@@ -1,9 +1,12 @@
|
||||
# CHANGELOG
|
||||
|
||||
## master
|
||||
## 6.0.3 Sep 19, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for all users on 6.0.2 using `api.query.*.*.at` calls
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix `api.query.<module>.<method>.at` queries
|
||||
- Adjust typegen formatting for metadata documentation
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -35,6 +35,6 @@
|
||||
"@types/jest": "^27.0.1",
|
||||
"copyfiles": "^2.4.1"
|
||||
},
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"packageManager": "yarn@3.0.1"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api-contract",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Interfaces for interacting with contracts and contract ABIs",
|
||||
"main": "index.js",
|
||||
@@ -20,8 +20,8 @@
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/api": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/api": "6.0.3",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"rxjs": "^7.3.0"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api-derive",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Common functions used across Polkadot, derived from RPC calls and storage queries.",
|
||||
"main": "index.js",
|
||||
@@ -20,15 +20,15 @@
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-derive#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/api": "6.0.3-0",
|
||||
"@polkadot/rpc-core": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/api": "6.0.3",
|
||||
"@polkadot/rpc-core": "6.0.3",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"@polkadot/util-crypto": "^7.4.1",
|
||||
"rxjs": "^7.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^7.4.1",
|
||||
"@polkadot/rpc-provider": "6.0.3-0"
|
||||
"@polkadot/rpc-provider": "6.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/api",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Promise and RxJS wrappers around the Polkadot JS RPC",
|
||||
"main": "index.js",
|
||||
@@ -20,12 +20,12 @@
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/api-derive": "6.0.3-0",
|
||||
"@polkadot/api-derive": "6.0.3",
|
||||
"@polkadot/keyring": "^7.4.1",
|
||||
"@polkadot/rpc-core": "6.0.3-0",
|
||||
"@polkadot/rpc-provider": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/types-known": "6.0.3-0",
|
||||
"@polkadot/rpc-core": "6.0.3",
|
||||
"@polkadot/rpc-provider": "6.0.3",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/types-known": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"@polkadot/util-crypto": "^7.4.1",
|
||||
"eventemitter3": "^4.0.7",
|
||||
|
||||
@@ -358,12 +358,12 @@ export abstract class Decorate<ApiType extends ApiTypes> extends Events {
|
||||
(this.hasSubscriptions
|
||||
? this._rpcCore.state.subscribeStorage
|
||||
: this._rpcCore.state.queryStorageAt)(
|
||||
calls.map((arg: QueryableStorageMultiArg<ApiType>) =>
|
||||
Array.isArray(arg)
|
||||
? arg[0].creator.meta.type.asMap.hashers.length === 1
|
||||
? [arg[0].creator, arg.slice(1)]
|
||||
: [arg[0].creator, ...arg.slice(1)]
|
||||
: [arg.creator])));
|
||||
calls.map((args: QueryableStorageMultiArg<ApiType>) =>
|
||||
Array.isArray(args)
|
||||
? args[0].creator.meta.type.asMap.hashers.length === 1
|
||||
? [args[0].creator, args.slice(1)]
|
||||
: [args[0].creator, ...args.slice(1)]
|
||||
: [args.creator])));
|
||||
}
|
||||
|
||||
protected _decorateExtrinsics<ApiType extends ApiTypes> ({ tx }: DecoratedMeta, decorateMethod: DecorateMethod<ApiType>): SubmittableExtrinsics<ApiType> {
|
||||
@@ -418,7 +418,7 @@ export abstract class Decorate<ApiType extends ApiTypes> extends Events {
|
||||
|
||||
private _decorateStorageEntry<ApiType extends ApiTypes> (creator: StorageEntry, decorateMethod: DecorateMethod<ApiType>): QueryableStorageEntry<ApiType> {
|
||||
// get the storage arguments, with DoubleMap as an array entry, otherwise spread
|
||||
const getArgs = (args: unknown[]): unknown[] => extractStorageArgs(this.#registry, creator, args);
|
||||
const getArgs = (args: unknown[]) => extractStorageArgs(this.#registry, creator, args);
|
||||
|
||||
// Disable this where it occurs for each field we are decorating
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment */
|
||||
|
||||
@@ -165,7 +165,7 @@ export abstract class Init<ApiType extends ApiTypes> extends Decorate<ApiType> {
|
||||
}
|
||||
|
||||
// nothing has been found, construct new
|
||||
const registry = new TypeRegistry(blockHash);
|
||||
const registry = new TypeRegistry(blockHash, this.registry.compatSpecs);
|
||||
const metadata = new Metadata(registry,
|
||||
await firstValueFrom((this._rpcCore.state.getMetadata as RpcInterfaceMethod).raw(header.parentHash))
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/rpc-core",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "A JavaScript wrapper for the Polkadot JsonRPC interface",
|
||||
"main": "index.js",
|
||||
@@ -20,8 +20,8 @@
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-core#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/rpc-provider": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/rpc-provider": "6.0.3",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"rxjs": "^7.3.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/rpc-provider",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Transport providers for the API",
|
||||
"main": "index.js",
|
||||
@@ -20,7 +20,7 @@
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/rpc-provider#readme",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"@polkadot/util-crypto": "^7.4.1",
|
||||
"@polkadot/x-fetch": "^7.4.1",
|
||||
@@ -30,7 +30,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^7.4.1",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"mock-socket": "^9.0.3",
|
||||
"nock": "^13.1.3"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/typegen",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Type generation scripts",
|
||||
"main": "index.js",
|
||||
@@ -29,10 +29,10 @@
|
||||
"@babel/core": "^7.15.5",
|
||||
"@babel/register": "^7.15.3",
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/api": "6.0.3-0",
|
||||
"@polkadot/rpc-provider": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/types-support": "6.0.3-0",
|
||||
"@polkadot/api": "6.0.3",
|
||||
"@polkadot/rpc-provider": "6.0.3",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/types-support": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"handlebars": "^4.7.7",
|
||||
"websocket": "^1.0.34",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/types-known",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Known type definitions",
|
||||
"main": "index.js",
|
||||
@@ -21,7 +21,7 @@
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/networks": "^7.4.1",
|
||||
"@polkadot/types": "6.0.3-0",
|
||||
"@polkadot/types": "6.0.3",
|
||||
"@polkadot/util": "^7.4.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/types-support",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Supporting files for types, mostly for testing",
|
||||
"main": "index.js",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@polkadot/types",
|
||||
"version": "6.0.3-0",
|
||||
"version": "6.0.3",
|
||||
"type": "module",
|
||||
"description": "Implementation of the Parity codec",
|
||||
"main": "index.js",
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^7.4.1",
|
||||
"@polkadot/types-support": "6.0.3-0",
|
||||
"@polkadot/types-support": "6.0.3",
|
||||
"@types/bn.js": "^4.11.6",
|
||||
"bn.js": "^4.12.0"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import type { ExtDef } from '../extrinsic/signedExtensions/types';
|
||||
import type { ChainProperties, CodecHash, DispatchErrorModule, Hash, MetadataLatest, PortableRegistry, SiLookupTypeId } from '../interfaces/types';
|
||||
import type { CallFunction, Codec, CodecHasher, Constructor, DetectCodec, DetectConstructor, RegisteredTypes, Registry, RegistryError, RegistryTypes } from '../types';
|
||||
import type { CallFunction, Codec, CodecHasher, Constructor, DetectCodec, DetectConstructor, RegisteredTypes, Registry, RegistryError, RegistryTypes, TypeSpec } from '../types';
|
||||
import type { CreateOptions } from './types';
|
||||
|
||||
import { assert, assertReturn, BN_ZERO, formatBalance, isFunction, isString, isU8a, logger, stringCamelCase, stringify, u8aToHex } from '@polkadot/util';
|
||||
@@ -145,14 +145,20 @@ export class TypeRegistry implements Registry {
|
||||
|
||||
#userExtensions?: ExtDef;
|
||||
|
||||
public compatSpecs: TypeSpec[] = [];
|
||||
|
||||
public createdAtHash?: Hash;
|
||||
|
||||
constructor (createdAtHash?: Hash | Uint8Array | string) {
|
||||
constructor (createdAtHash?: Hash | Uint8Array | string, compatSpecs?: TypeSpec[]) {
|
||||
this.#knownDefaults = { Json, Metadata, Raw, ...baseTypes };
|
||||
this.#knownDefinitions = definitions as unknown as Record<string, { types: RegistryTypes }>;
|
||||
|
||||
this.init();
|
||||
|
||||
if (compatSpecs) {
|
||||
this.compatSpecs = compatSpecs;
|
||||
}
|
||||
|
||||
if (createdAtHash) {
|
||||
this.createdAtHash = this.createType('Hash', createdAtHash);
|
||||
}
|
||||
|
||||
@@ -5,20 +5,11 @@ import type { ErrorMetadataV13, EventMetadataV13, ExtrinsicMetadataV13, Extrinsi
|
||||
import type { SiVariant } from '../../interfaces/scaleInfo';
|
||||
import type { Text } from '../../primitive/Text';
|
||||
import type { Type } from '../../primitive/Type';
|
||||
import type { OverrideModuleType, Registry } from '../../types';
|
||||
import type { OverrideModuleType, Registry, TypeSpec } from '../../types';
|
||||
|
||||
import { getModuleTypes, knownOrigins } from '@polkadot/types-known';
|
||||
import { stringCamelCase } from '@polkadot/util';
|
||||
|
||||
interface TypeSpec {
|
||||
def: {
|
||||
HistoricMetaCompat?: string;
|
||||
Tuple?: number[];
|
||||
Variant?: { variants: SiVariant[] }
|
||||
},
|
||||
path?: string[];
|
||||
}
|
||||
|
||||
interface MapDef {
|
||||
hashers: StorageHasherV13[];
|
||||
keys: Type[];
|
||||
@@ -113,14 +104,14 @@ function setTypeOverride (sectionTypes: OverrideModuleType, types: Type[]): void
|
||||
* Apply module-specific type overrides (always be done as part of toV14)
|
||||
* @internal
|
||||
**/
|
||||
function convertCalls (registry: Registry, types: TypeSpec[], modName: Text, calls: FunctionMetadataV13[], sectionTypes: OverrideModuleType): PalletCallMetadataV14 {
|
||||
function convertCalls (registry: Registry, modName: Text, calls: FunctionMetadataV13[], sectionTypes: OverrideModuleType): PalletCallMetadataV14 {
|
||||
const variants = calls.map(({ args, docs, name }, index): SiVariant => {
|
||||
setTypeOverride(sectionTypes, args.map(({ type }) => type));
|
||||
|
||||
return registry.createType('SiVariant', {
|
||||
docs,
|
||||
fields: args.map(({ name, type }) =>
|
||||
registry.createType('SiField', { name, type: compatType(types, type) })
|
||||
registry.createType('SiField', { name, type: compatType(registry.compatSpecs, type) })
|
||||
),
|
||||
index,
|
||||
name
|
||||
@@ -128,7 +119,7 @@ function convertCalls (registry: Registry, types: TypeSpec[], modName: Text, cal
|
||||
});
|
||||
|
||||
return registry.createType('PalletCallMetadataV14', {
|
||||
type: variantType(modName, 'Call', types, variants)
|
||||
type: variantType(modName, 'Call', registry.compatSpecs, variants)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -136,14 +127,14 @@ function convertCalls (registry: Registry, types: TypeSpec[], modName: Text, cal
|
||||
* Apply module-specific type overrides (always be done as part of toV14)
|
||||
* @internal
|
||||
*/
|
||||
function convertConstants (registry: Registry, types: TypeSpec[], constants: ModuleConstantMetadataV13[], sectionTypes: OverrideModuleType): PalletConstantMetadataV14[] {
|
||||
function convertConstants (registry: Registry, constants: ModuleConstantMetadataV13[], sectionTypes: OverrideModuleType): PalletConstantMetadataV14[] {
|
||||
return constants.map(({ docs, name, type, value }): PalletConstantMetadataV14 => {
|
||||
setTypeOverride(sectionTypes, [type]);
|
||||
|
||||
return registry.createType('PalletConstantMetadataV14', {
|
||||
docs,
|
||||
name,
|
||||
type: compatType(types, type),
|
||||
type: compatType(registry.compatSpecs, type),
|
||||
value
|
||||
});
|
||||
});
|
||||
@@ -154,7 +145,7 @@ function convertConstants (registry: Registry, types: TypeSpec[], constants: Mod
|
||||
* @internal
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
function convertErrors (registry: Registry, types: TypeSpec[], modName: Text, errors: ErrorMetadataV13[], _sectionTypes: OverrideModuleType): PalletErrorMetadataV14 {
|
||||
function convertErrors (registry: Registry, modName: Text, errors: ErrorMetadataV13[], _sectionTypes: OverrideModuleType): PalletErrorMetadataV14 {
|
||||
const variants = errors.map(({ docs, name }, index): SiVariant =>
|
||||
registry.createType('SiVariant', {
|
||||
docs,
|
||||
@@ -165,7 +156,7 @@ function convertErrors (registry: Registry, types: TypeSpec[], modName: Text, er
|
||||
);
|
||||
|
||||
return registry.createType('PalletErrorMetadataV14', {
|
||||
type: variantType(modName, 'Error', types, variants)
|
||||
type: variantType(modName, 'Error', registry.compatSpecs, variants)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -173,14 +164,14 @@ function convertErrors (registry: Registry, types: TypeSpec[], modName: Text, er
|
||||
* Apply module-specific type overrides (always be done as part of toV14)
|
||||
* @internal
|
||||
**/
|
||||
function convertEvents (registry: Registry, types: TypeSpec[], modName: Text, events: EventMetadataV13[], sectionTypes: OverrideModuleType): PalletEventMetadataV14 {
|
||||
function convertEvents (registry: Registry, modName: Text, events: EventMetadataV13[], sectionTypes: OverrideModuleType): PalletEventMetadataV14 {
|
||||
const variants = events.map(({ args, docs, name }, index): SiVariant => {
|
||||
setTypeOverride(sectionTypes, args);
|
||||
|
||||
return registry.createType('SiVariant', {
|
||||
docs,
|
||||
fields: args.map((t) =>
|
||||
registry.createType('SiField', { type: compatType(types, t) })
|
||||
registry.createType('SiField', { type: compatType(registry.compatSpecs, t) })
|
||||
),
|
||||
index,
|
||||
name
|
||||
@@ -188,20 +179,20 @@ function convertEvents (registry: Registry, types: TypeSpec[], modName: Text, ev
|
||||
});
|
||||
|
||||
return registry.createType('PalletEventMetadataV14', {
|
||||
type: variantType(modName, 'Event', types, variants)
|
||||
type: variantType(modName, 'Event', registry.compatSpecs, variants)
|
||||
});
|
||||
}
|
||||
|
||||
function createMapEntry (registry: Registry, sectionTypes: OverrideModuleType, types: TypeSpec[], { hashers, keys, value }: MapDef): StorageEntryTypeV14 {
|
||||
function createMapEntry (registry: Registry, sectionTypes: OverrideModuleType, { hashers, keys, value }: MapDef): StorageEntryTypeV14 {
|
||||
setTypeOverride(sectionTypes, [value, ...(Array.isArray(keys) ? keys : [keys])]);
|
||||
|
||||
return registry.createType('StorageEntryTypeV14', {
|
||||
Map: {
|
||||
hashers,
|
||||
key: hashers.length === 1
|
||||
? compatType(types, keys[0])
|
||||
: (types.push({ def: { Tuple: keys.map((t) => compatType(types, t)) } }) - 1),
|
||||
value: compatType(types, value)
|
||||
? compatType(registry.compatSpecs, keys[0])
|
||||
: (registry.compatSpecs.push({ def: { Tuple: keys.map((t) => compatType(registry.compatSpecs, t)) } }) - 1),
|
||||
value: compatType(registry.compatSpecs, value)
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -210,7 +201,7 @@ function createMapEntry (registry: Registry, sectionTypes: OverrideModuleType, t
|
||||
* Apply module-specific storage type overrides (always part of toV14)
|
||||
* @internal
|
||||
**/
|
||||
function convertStorage (registry: Registry, types: TypeSpec[], { items, prefix }: StorageMetadataV13, sectionTypes: OverrideModuleType): PalletStorageMetadataV14 {
|
||||
function convertStorage (registry: Registry, { items, prefix }: StorageMetadataV13, sectionTypes: OverrideModuleType): PalletStorageMetadataV14 {
|
||||
return registry.createType('PalletStorageMetadataV14', {
|
||||
items: items.map(({ docs, fallback, modifier, name, type }): StorageEntryMetadataV14 => {
|
||||
let entryType: StorageEntryTypeV14;
|
||||
@@ -221,12 +212,12 @@ function convertStorage (registry: Registry, types: TypeSpec[], { items, prefix
|
||||
setTypeOverride(sectionTypes, [plain]);
|
||||
|
||||
entryType = registry.createType('StorageEntryTypeV14', {
|
||||
Plain: compatType(types, plain)
|
||||
Plain: compatType(registry.compatSpecs, plain)
|
||||
});
|
||||
} else if (type.isMap) {
|
||||
const map = type.asMap;
|
||||
|
||||
entryType = createMapEntry(registry, sectionTypes, types, {
|
||||
entryType = createMapEntry(registry, sectionTypes, {
|
||||
hashers: [map.hasher],
|
||||
keys: [map.key],
|
||||
value: map.value
|
||||
@@ -234,7 +225,7 @@ function convertStorage (registry: Registry, types: TypeSpec[], { items, prefix
|
||||
} else if (type.isDoubleMap) {
|
||||
const dm = type.asDoubleMap;
|
||||
|
||||
entryType = createMapEntry(registry, sectionTypes, types, {
|
||||
entryType = createMapEntry(registry, sectionTypes, {
|
||||
hashers: [dm.hasher, dm.key2Hasher],
|
||||
keys: [dm.key1, dm.key2],
|
||||
value: dm.value
|
||||
@@ -242,7 +233,7 @@ function convertStorage (registry: Registry, types: TypeSpec[], { items, prefix
|
||||
} else {
|
||||
const nm = type.asNMap;
|
||||
|
||||
entryType = createMapEntry(registry, sectionTypes, types, {
|
||||
entryType = createMapEntry(registry, sectionTypes, {
|
||||
hashers: nm.hashers,
|
||||
keys: nm.keyVec,
|
||||
value: nm.value
|
||||
@@ -263,7 +254,7 @@ function convertStorage (registry: Registry, types: TypeSpec[], { items, prefix
|
||||
|
||||
/** @internal */
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
function convertExtrinsic (registry: Registry, _types: TypeSpec[], { signedExtensions, version }: ExtrinsicMetadataV13): ExtrinsicMetadataV14 {
|
||||
function convertExtrinsic (registry: Registry, { signedExtensions, version }: ExtrinsicMetadataV13): ExtrinsicMetadataV14 {
|
||||
return registry.createType('ExtrinsicMetadataV14', {
|
||||
signedExtensions: signedExtensions.map((identifier) => ({
|
||||
identifier,
|
||||
@@ -275,17 +266,17 @@ function convertExtrinsic (registry: Registry, _types: TypeSpec[], { signedExten
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
function createPallet (registry: Registry, types: TypeSpec[], mod: ModuleMetadataV13, { calls, constants, errors, events, storage }: { calls: FunctionMetadataV13[] | null, constants: ModuleConstantMetadataV13[], errors: ErrorMetadataV13[] | null, events: EventMetadataV13[] | null, storage: StorageMetadataV13 | null }): PalletMetadataV14 {
|
||||
function createPallet (registry: Registry, mod: ModuleMetadataV13, { calls, constants, errors, events, storage }: { calls: FunctionMetadataV13[] | null, constants: ModuleConstantMetadataV13[], errors: ErrorMetadataV13[] | null, events: EventMetadataV13[] | null, storage: StorageMetadataV13 | null }): PalletMetadataV14 {
|
||||
const sectionTypes = getModuleTypes(registry, stringCamelCase(mod.name));
|
||||
|
||||
return registry.createType('PalletMetadataV14', {
|
||||
calls: calls && convertCalls(registry, types, mod.name, calls, sectionTypes),
|
||||
constants: convertConstants(registry, types, constants, sectionTypes),
|
||||
errors: errors && convertErrors(registry, types, mod.name, errors, sectionTypes),
|
||||
events: events && convertEvents(registry, types, mod.name, events, sectionTypes),
|
||||
calls: calls && convertCalls(registry, mod.name, calls, sectionTypes),
|
||||
constants: convertConstants(registry, constants, sectionTypes),
|
||||
errors: errors && convertErrors(registry, mod.name, errors, sectionTypes),
|
||||
events: events && convertEvents(registry, mod.name, events, sectionTypes),
|
||||
index: mod.index,
|
||||
name: mod.name,
|
||||
storage: storage && convertStorage(registry, types, storage, sectionTypes)
|
||||
storage: storage && convertStorage(registry, storage, sectionTypes)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -294,15 +285,12 @@ function createPallet (registry: Registry, types: TypeSpec[], mod: ModuleMetadat
|
||||
* @internal
|
||||
**/
|
||||
export function toV14 (registry: Registry, v13: MetadataV13, metaVersion: number): MetadataV14 {
|
||||
// the types that we will pass
|
||||
const types: TypeSpec[] = [];
|
||||
|
||||
compatType(types, 'Null'); // position 0 always has Null
|
||||
compatType(registry.compatSpecs, 'Null'); // position 0 always has Null
|
||||
registerOriginCaller(registry, v13.modules, metaVersion);
|
||||
|
||||
const extrinsic = convertExtrinsic(registry, types, v13.extrinsic);
|
||||
const extrinsic = convertExtrinsic(registry, v13.extrinsic);
|
||||
const pallets = v13.modules.map((mod) =>
|
||||
createPallet(registry, types, mod, {
|
||||
createPallet(registry, mod, {
|
||||
calls: mod.calls.unwrapOr(null),
|
||||
constants: mod.constants,
|
||||
errors: mod.errors.length ? mod.errors : null,
|
||||
@@ -314,7 +302,7 @@ export function toV14 (registry: Registry, v13: MetadataV13, metaVersion: number
|
||||
return registry.createType('MetadataV14', {
|
||||
extrinsic,
|
||||
lookup: {
|
||||
types: types.map((type, id) =>
|
||||
types: registry.compatSpecs.map((type, id) =>
|
||||
registry.createType('PortableType', { id, type })
|
||||
)
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@ import type { CreateOptions } from '../create/types';
|
||||
import type { ExtDef } from '../extrinsic/signedExtensions/types';
|
||||
import type { MetadataLatest, PortableRegistry } from '../interfaces/metadata';
|
||||
import type { CodecHash, Hash } from '../interfaces/runtime';
|
||||
import type { SiField, SiLookupTypeId } from '../interfaces/scaleInfo';
|
||||
import type { SiField, SiLookupTypeId, SiVariant } from '../interfaces/scaleInfo';
|
||||
import type { ChainProperties } from '../interfaces/system';
|
||||
import type { Metadata } from '../metadata';
|
||||
import type { CallFunction } from './calls';
|
||||
@@ -47,6 +47,17 @@ export interface RegistryError {
|
||||
section: string;
|
||||
}
|
||||
|
||||
export interface TypeSpec {
|
||||
def: {
|
||||
HistoricMetaCompat?: string;
|
||||
Tuple?: number[];
|
||||
Variant?: {
|
||||
variants: SiVariant[];
|
||||
}
|
||||
},
|
||||
path?: string[];
|
||||
}
|
||||
|
||||
export interface OverrideVersionedType {
|
||||
// min (v >= min) and max (v <= max)
|
||||
minmax: [number | undefined | null, number | undefined | null] | [number?, number?] | (number | undefined | null)[];
|
||||
@@ -112,6 +123,7 @@ export interface Registry {
|
||||
readonly unknownTypes: string[];
|
||||
readonly signedExtensions: string[];
|
||||
|
||||
compatSpecs: TypeSpec[];
|
||||
createdAtHash?: Hash;
|
||||
|
||||
findMetaCall (callIndex: Uint8Array): CallFunction;
|
||||
|
||||
@@ -1854,40 +1854,40 @@ __metadata:
|
||||
resolution: "@polkadot/api-contract@workspace:packages/api-contract"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/api": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/api": 6.0.3
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
rxjs: ^7.3.0
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/api-derive@6.0.3-0, @polkadot/api-derive@workspace:packages/api-derive":
|
||||
"@polkadot/api-derive@6.0.3, @polkadot/api-derive@workspace:packages/api-derive":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/api-derive@workspace:packages/api-derive"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/api": 6.0.3-0
|
||||
"@polkadot/api": 6.0.3
|
||||
"@polkadot/keyring": ^7.4.1
|
||||
"@polkadot/rpc-core": 6.0.3-0
|
||||
"@polkadot/rpc-provider": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/rpc-core": 6.0.3
|
||||
"@polkadot/rpc-provider": 6.0.3
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
"@polkadot/util-crypto": ^7.4.1
|
||||
rxjs: ^7.3.0
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/api@6.0.3-0, @polkadot/api@workspace:packages/api":
|
||||
"@polkadot/api@6.0.3, @polkadot/api@workspace:packages/api":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/api@workspace:packages/api"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/api-derive": 6.0.3-0
|
||||
"@polkadot/api-derive": 6.0.3
|
||||
"@polkadot/keyring": ^7.4.1
|
||||
"@polkadot/rpc-core": 6.0.3-0
|
||||
"@polkadot/rpc-provider": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/types-known": 6.0.3-0
|
||||
"@polkadot/rpc-core": 6.0.3
|
||||
"@polkadot/rpc-provider": 6.0.3
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/types-known": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
"@polkadot/util-crypto": ^7.4.1
|
||||
eventemitter3: ^4.0.7
|
||||
@@ -2012,26 +2012,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@polkadot/rpc-core@6.0.3-0, @polkadot/rpc-core@workspace:packages/rpc-core":
|
||||
"@polkadot/rpc-core@6.0.3, @polkadot/rpc-core@workspace:packages/rpc-core":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/rpc-core@workspace:packages/rpc-core"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/keyring": ^7.4.1
|
||||
"@polkadot/rpc-provider": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/rpc-provider": 6.0.3
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
rxjs: ^7.3.0
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/rpc-provider@6.0.3-0, @polkadot/rpc-provider@workspace:packages/rpc-provider":
|
||||
"@polkadot/rpc-provider@6.0.3, @polkadot/rpc-provider@workspace:packages/rpc-provider":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/rpc-provider@workspace:packages/rpc-provider"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/keyring": ^7.4.1
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
"@polkadot/util-crypto": ^7.4.1
|
||||
"@polkadot/x-fetch": ^7.4.1
|
||||
@@ -2059,10 +2059,10 @@ __metadata:
|
||||
"@babel/core": ^7.15.5
|
||||
"@babel/register": ^7.15.3
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/api": 6.0.3-0
|
||||
"@polkadot/rpc-provider": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/types-support": 6.0.3-0
|
||||
"@polkadot/api": 6.0.3
|
||||
"@polkadot/rpc-provider": 6.0.3
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/types-support": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
"@types/websocket": ^1.0.4
|
||||
"@types/yargs": ^17.0.2
|
||||
@@ -2078,18 +2078,18 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/types-known@6.0.3-0, @polkadot/types-known@workspace:packages/types-known":
|
||||
"@polkadot/types-known@6.0.3, @polkadot/types-known@workspace:packages/types-known":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/types-known@workspace:packages/types-known"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/networks": ^7.4.1
|
||||
"@polkadot/types": 6.0.3-0
|
||||
"@polkadot/types": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/types-support@6.0.3-0, @polkadot/types-support@workspace:packages/types-support":
|
||||
"@polkadot/types-support@6.0.3, @polkadot/types-support@workspace:packages/types-support":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/types-support@workspace:packages/types-support"
|
||||
dependencies:
|
||||
@@ -2098,13 +2098,13 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@polkadot/types@6.0.3-0, @polkadot/types@workspace:packages/types":
|
||||
"@polkadot/types@6.0.3, @polkadot/types@workspace:packages/types":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@polkadot/types@workspace:packages/types"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.15.4
|
||||
"@polkadot/keyring": ^7.4.1
|
||||
"@polkadot/types-support": 6.0.3-0
|
||||
"@polkadot/types-support": 6.0.3
|
||||
"@polkadot/util": ^7.4.1
|
||||
"@polkadot/util-crypto": ^7.4.1
|
||||
"@types/bn.js": ^4.11.6
|
||||
|
||||
Reference in New Issue
Block a user