diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts index 1413a6905a..46a4c23dfd 100644 --- a/packages/api-contract/src/Abi/toLatest.ts +++ b/packages/api-contract/src/Abi/toLatest.ts @@ -8,7 +8,11 @@ import { v0ToV1 } from './toV1'; import { v1ToV2 } from './toV2'; import { v2ToV3 } from './toV3'; -type Versions = 'V3' | 'V2' | 'V1' | 'V0'; +// The versions where an enum is used, aka V0 is missing +// (Order from newest, i.e. we expect more on newest vs oldest) +export const enumVersions = ['V3', 'V2', 'V1']; + +type Versions = typeof enumVersions[number] | 'V0'; type Converter = (registry: Registry, vx: any) => ContractMetadataLatest; @@ -26,10 +30,6 @@ export const v2ToLatest = createConverter(v3ToLatest, v2ToV3); export const v1ToLatest = createConverter(v2ToLatest, v1ToV2); export const v0ToLatest = createConverter(v1ToLatest, v0ToV1); -// The versions where an enum is used, aka V0 is missing -// (Order from newest, i.e. we expect more on newest vs oldest) -export const enumVersions = ['V3', 'V2', 'V1']; - export const convertVersions: [Versions, Converter][] = [ ['V3', v3ToLatest], ['V2', v2ToLatest], diff --git a/packages/api-contract/src/Abi/toV2.ts b/packages/api-contract/src/Abi/toV2.ts index ee8a1daf15..e206a68e87 100644 --- a/packages/api-contract/src/Abi/toV2.ts +++ b/packages/api-contract/src/Abi/toV2.ts @@ -23,7 +23,7 @@ interface ArgsEntry extends NamedEntry { args: GetArgsType['args'][0][]; } -const ARG_TYPES = { +const ARG_TYPES = { ContractConstructorSpec: 'ContractMessageParamSpecV2', ContractEventSpec: 'ContractEventParamSpecV2', ContractMessageSpec: 'ContractMessageParamSpecV2' diff --git a/packages/types/src/interfaces/metadata/hashers.ts b/packages/types/src/interfaces/metadata/hashers.ts index 8584bbf762..86ea1c5114 100644 --- a/packages/types/src/interfaces/metadata/hashers.ts +++ b/packages/types/src/interfaces/metadata/hashers.ts @@ -4,7 +4,7 @@ // order important in structs... :) /* eslint-disable sort-keys */ -export const AllHashers = { +export const AllHashers = { Blake2_128: null, // eslint-disable-line camelcase Blake2_256: null, // eslint-disable-line camelcase Blake2_128Concat: null, // eslint-disable-line camelcase diff --git a/packages/types/src/metadata/MetadataVersioned.ts b/packages/types/src/metadata/MetadataVersioned.ts index b0ca814743..c9d2e284c1 100644 --- a/packages/types/src/metadata/MetadataVersioned.ts +++ b/packages/types/src/metadata/MetadataVersioned.ts @@ -17,11 +17,15 @@ import { toLatest } from './v14/toLatest'; import { MagicNumber } from './MagicNumber'; import { getUniqTypes, toCallsOnly } from './util'; -type MetaMapped = MetadataV9 | MetadataV10 | MetadataV11 | MetadataV12 | MetadataV13 | MetadataV14; -type MetaAsX = 'asV9' | 'asV10' | 'asV11' | 'asV12' | 'asV13' | 'asV14'; -type MetaVersions = 'latest' | 9 | 10 | 11 | 12 | 13 | 14; +// Use these to generate all the Meta* types below via template keys +// NOTE: Keep from latest -> earliest, see the LATEST_VERSION 0 index +const KNOWN_VERSIONS = [14, 13, 12, 11, 10, 9]; +const LATEST_VERSION = KNOWN_VERSIONS[0]; -const LATEST_VERSION = 14; +type MetaAll = typeof KNOWN_VERSIONS[number]; +type MetaAsX = `asV${MetaAll}`; +type MetaMapped = MetadataAll[MetaAsX]; +type MetaVersions = MetaAll | 'latest'; /** * @name MetadataVersioned