UNPKG

@polkadot/types

Version:
106 lines (105 loc) 4.9 kB
import { objectSpread } from '@polkadot/util'; function palletsFromV15(registry, palletV15) { const deprecationInfo = registry.createTypeUnsafe('ItemDeprecationInfoV16', ['NotDeprecated']); const associatedTypes = registry.createTypeUnsafe('Vec<PalletAssociatedTypeMetadataV16>', [[]]); const viewFunctions = registry.createTypeUnsafe('Vec<PalletViewFunctionMetadataV16>', [[]]); return registry.createTypeUnsafe('PalletMetadataV16', [ objectSpread({}, palletV15, { associatedTypes, calls: palletV15.calls.isSome ? convertCalls(registry, palletV15.calls.unwrap()) : null, constants: convertConstants(registry, palletV15.constants), deprecationInfo, errors: palletV15.errors.isSome ? converErrors(registry, palletV15.errors.unwrap()) : null, events: palletV15.events.isSome ? convertEvents(registry, palletV15.events.unwrap()) : null, storage: palletV15.storage.isSome ? convertStorage(registry, palletV15.storage.unwrap()) : null, viewFunctions }) ]); } function convertStorage(registry, storage) { const deprecationInfo = registry.createTypeUnsafe('ItemDeprecationInfoV16', ['NotDeprecated']); const items = storage.items.map((item) => registry.createTypeUnsafe('StorageEntryMetadataV16', [ objectSpread({}, item, { deprecationInfo }) ])); return registry.createTypeUnsafe('PalletStorageMetadataV16', [{ items: registry.createTypeUnsafe('Vec<StorageEntryMetadataV16>', [items]), prefix: storage.prefix }]); } function convertCalls(registry, calls) { const deprecationInfo = registry.createTypeUnsafe('EnumDeprecationInfoV16', []); return registry.createTypeUnsafe('PalletCallMetadataV16', [{ deprecationInfo, type: calls.type }]); } function convertEvents(registry, events) { const deprecationInfo = registry.createTypeUnsafe('EnumDeprecationInfoV16', []); return registry.createTypeUnsafe('PalletEventMetadataV16', [{ deprecationInfo, type: events.type }]); } function convertConstants(registry, constants) { const deprecationInfo = registry.createTypeUnsafe('ItemDeprecationInfoV16', ['NotDeprecated']); return registry.createTypeUnsafe('Vec<PalletConstantMetadataV16>', [ constants.map((constant) => registry.createTypeUnsafe('PalletConstantMetadataV16', [ objectSpread({}, constant, { deprecationInfo }) ])) ]); } function converErrors(registry, errors) { const deprecationInfo = registry.createTypeUnsafe('EnumDeprecationInfoV16', []); return registry.createTypeUnsafe('PalletErrorMetadataV16', [{ deprecationInfo, type: errors.type }]); } function extrinsicFromV15(registry, extrinsicV15) { const transactionExtensions = extrinsicV15.signedExtensions.map(({ additionalSigned, identifier, type }) => registry.createTypeUnsafe('TransactionExtensionMetadataV16', [{ identifier, implict: additionalSigned, type }])); const indexes = transactionExtensions.map((_, i) => registry.createTypeUnsafe('Compact<u32>', [i])); const transactionExtensionsByVersion = registry.createTypeUnsafe('BTreeMap<u8, Vec<Compact<u32>>>', [new Map([[registry.createTypeUnsafe('u8', [extrinsicV15.version]), registry.createTypeUnsafe('Vec<Compact<u32>>', [indexes])]])]); return registry.createTypeUnsafe('ExtrinsicMetadataV16', [ { addressType: extrinsicV15.addressType, callType: extrinsicV15.callType, signatureType: extrinsicV15.signatureType, transactionExtensions, transactionExtensionsByVersion, versions: [extrinsicV15.version] } ]); } function apisFromV15(registry, runtimeApiV15) { const deprecationInfo = registry.createTypeUnsafe('ItemDeprecationInfoV16', ['NotDeprecated']); const methods = runtimeApiV15.methods.map((method) => registry.createTypeUnsafe('RuntimeApiMethodMetadataV16', [objectSpread({}, method, { deprecationInfo })])); return registry.createTypeUnsafe('RuntimeApiMetadataV16', [ objectSpread({}, runtimeApiV15, { deprecationInfo, methods, version: registry.createTypeUnsafe('Compact<u32>', [0]) }) ]); } /** * Convert the Metadata to v16 * @internal **/ export function toV16(registry, v15, _) { const pallets = v15.pallets.map((pallet) => { return palletsFromV15(registry, pallet); }); const extrinsic = extrinsicFromV15(registry, v15.extrinsic); const apis = v15.apis.map((runtimeApi) => apisFromV15(registry, runtimeApi)); return registry.createTypeUnsafe('MetadataV16', [ objectSpread({}, v15, { apis, extrinsic, pallets }) ]); }